Android 默认相机捕获图像 return 图像 URI 空
Android Default camera capture image return image URI null
我正在打开默认相机应用程序以在我的应用程序中捕获图像,但没有获取捕获的图像 uri。下面是我的代码 -
打开相机的代码 -
initTmpUris();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
intent.putExtra("return-data", true);
创建图像存储路径的代码 -
private void initTmpUris() {
File proejctDirectory = new File(CameraUtil.FOLDER_PATH + File.separator + CameraUtil.FOLDER_NAME);
if (!proejctDirectory.exists()) {
proejctDirectory.mkdir();
}
File tempDirectory = new File(proejctDirectory, "temp");
if (!tempDirectory.exists()) {
tempDirectory.mkdir();
} else {
// delete all old files
for (File file : tempDirectory.listFiles()) {
if (file.getName().startsWith("tmp_")
|| file.getName().startsWith("croped_")) {
}
}
}
capturedImageUri = Uri.fromFile(new File(tempDirectory, "tmp_"
+ String.valueOf(System.currentTimeMillis()) + ".jpg"));
File extraOutputFile = new File(tempDirectory, "croped_"
+ String.valueOf(System.currentTimeMillis()) + ".jpg");
extraOutputFile.setWritable(true);
cropImageUri = Uri.fromFile(extraOutputFile);
}
和 onActivityResult 中的代码 -
case REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP: {
if (resultCode == RESULT_OK) {
if(null!=capturedImageUri) {
String imagePath = capturedImageUri.getPath();
File file = new File(imagePath);
onSingleImageSelected(reqCodeStarter, file, imagePath,
get_Picture_bitmap(file));
}
} else {
onMediaPickCanceled(reqCodeStarter,
REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP);
}
}
break;
我在 samsung s7 设备中获取 capturedImageUri,在其他设备中获取捕获图像的 return url。
将此代码添加到 Manifest
文件中的 activity
标记。
android:configChanges="orientation|keyboardHidden|screenSize"
它不会让您当前的 activity 销毁并重新创建,因此您会得到结果。
我正在打开默认相机应用程序以在我的应用程序中捕获图像,但没有获取捕获的图像 uri。下面是我的代码 -
打开相机的代码 -
initTmpUris();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
intent.putExtra("return-data", true);
创建图像存储路径的代码 -
private void initTmpUris() {
File proejctDirectory = new File(CameraUtil.FOLDER_PATH + File.separator + CameraUtil.FOLDER_NAME);
if (!proejctDirectory.exists()) {
proejctDirectory.mkdir();
}
File tempDirectory = new File(proejctDirectory, "temp");
if (!tempDirectory.exists()) {
tempDirectory.mkdir();
} else {
// delete all old files
for (File file : tempDirectory.listFiles()) {
if (file.getName().startsWith("tmp_")
|| file.getName().startsWith("croped_")) {
}
}
}
capturedImageUri = Uri.fromFile(new File(tempDirectory, "tmp_"
+ String.valueOf(System.currentTimeMillis()) + ".jpg"));
File extraOutputFile = new File(tempDirectory, "croped_"
+ String.valueOf(System.currentTimeMillis()) + ".jpg");
extraOutputFile.setWritable(true);
cropImageUri = Uri.fromFile(extraOutputFile);
}
和 onActivityResult 中的代码 -
case REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP: {
if (resultCode == RESULT_OK) {
if(null!=capturedImageUri) {
String imagePath = capturedImageUri.getPath();
File file = new File(imagePath);
onSingleImageSelected(reqCodeStarter, file, imagePath,
get_Picture_bitmap(file));
}
} else {
onMediaPickCanceled(reqCodeStarter,
REQ_CODE_PICK_FROM_CAMERA_WITHOUT_CROP);
}
}
break;
我在 samsung s7 设备中获取 capturedImageUri,在其他设备中获取捕获图像的 return url。
将此代码添加到 Manifest
文件中的 activity
标记。
android:configChanges="orientation|keyboardHidden|screenSize"
它不会让您当前的 activity 销毁并重新创建,因此您会得到结果。