1.点击进入拍照存在设置好后的文件
// 通过uuid生成照片唯一名字
Settings.PICTURE_TMPURL = UUID.randomUUID().toString() + "image.jpg";
// 在该路径下构件文件对象
File tempFile = new File(Settings.TEMP_PATH, Settings.PICTURE_TMPURL);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
((Activity) mContext).startActivityForResult(intent, Constants.REQUEST_CODE_CAMERA);
dismiss();
用这种方式需要在intent中传入拍照后文件存放的位置,在onActivityResult中返回的intent为null,需要自己通过之前设置的文件来获取bitmap
if (arg0 == Constants.REQUEST_CODE_CAMERA && arg1 == Activity.RESULT_OK) {
// 拍照返回
tempFile = new File(Settings.TEMP_PATH, Settings.PICTURE_TMPURL);
if (tempFile.exists()) {
onGetFileListener.AfterGetFile(tempFile);
}
}
2.点击进入拍照,通过返回的bitmap存入到文件中
Intent cameraIntent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
if(requestCode == CAMERA_REQUEST && resultCode == RESULT_OK && data.getExtras().get("data")!=null){
if(rsd.getPhoto1URL() != null){ //删除上一张图片信息
deleteImgage(rsd.getPhoto1URL());
}
Bitmap photo = (Bitmap)data.getExtras().get("data");
File baseFile = FileHelper.getPicBaseFile();
if(baseFile == null){
showLongMessage("SD卡不可用,请检查SD卡情况");
return;
}
String fileName = getFileName(); //图片名称
rsd.setPhoto1URL(fileName);
saveBitmap(photo, fileName, baseFile);
imgPhoto.setImageBitmap(photo);
}