在我的应用程序中,我需要使用标准相机应用程序捕获图像。所以,我做的是:
public void TakePhotoProofs() {
// fetching the root directory
root = Environment.getExternalStorageDirectory().toString()
+ "/MyAppStoredImages";
// Creating folders for Image
imageFolderPath = root + "/captured_images";
File imagesFolder = new File(imageFolderPath);
if (!imagesFolder.exists()) {
imagesFolder.mkdirs();
}
// Generating file name by current date
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
imageName = today.format("%Y-%m-%d-%H-%M-%S") + ".png";
// Creating image here
File image = new File(imageFolderPath, imageName);
fileUri = Uri.fromFile(image);
imvPhotoFrame.setTag(imageFolderPath + File.separator + imageName);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(takePictureIntent, CAMERA_IMAGE_REQUEST);
}
在此代码中,我遇到了以下问题:
onActivityResult()
返回我的应用时
变量 fileUri 应该包含捕获图像的路径
上一步应该保存在我的文件夹中
的 / MyAppStoredImages / captured_images 注意:如果我单独运行标准相机应用程序,则底部框架(来自步骤(4))不为空。
在将我的固件从Android 4.1.2 Jelly Bean更新到Android 4.2.2 Jelly Bean之后,出现了这种情况。使用Android 4.1.2 Jelly Bean,所有图像都被正确捕获。
有人有同样的问题吗?在这种情况下我该怎么做?
更新 在this post中使用@Mohit给出的命题,我在放入EXTRA_OUTPUT之后添加了以下行:
takePictureIntent.putExtra("return-data", true);
现在,它可以与第三方相机应用程序(我使用CameraMX测试)正常工作。但我仍然无法使用我的默认相机应用程序(通过上述调用,我无法保存捕获的图像。但是单独此默认应用程序也能正常工作)。
所以,如果您遇到同样的问题,请以正确的方式引用我。
以防万一,升级到Android 4.2.2后,三星Galaxy Grand Duos i9082及其默认相机应用程序出现此问题。