设置 CameraX 图像捕获文件路径
Set CameraX image capture File path
我将文件路径设置为:
File file = new File(Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".png");
ImageCapture.OutputFileOptions outputFileOptions =
new ImageCapture.OutputFileOptions.Builder(file).build();
imageCapture.takePicture(outputFileOptions, Executors.newSingleThreadExecutor(),
new ImageCapture.OnImageSavedCallback() {
@Override
public void onImageSaved(ImageCapture.OutputFileResults outputFileResults) {
// insert your code here.
Log.d("PHOTO", "onImageSaved: saved");
}
@Override
public void onError(ImageCaptureException error) {
// insert your code here.
Log.d("PHOTO", "onError: " + error);
}
});
但出于某种原因,当我单击捕获图像按钮时,它会跳转到 onError 并记录以下内容:
onError: androidx.camera.core.ImageCaptureException: Failed to write or close the file
您的应用需要获得写入所需位置的权限。
您可以在清单和运行时请求 WRITE_EXTERNAL_STORAGE
,以允许您在请求的位置写入...直到 Android 9。Android 10 及以后不支持普通应用在外存根目录创建任意目录
您选择getExternalFilesDir()
意味着您不需要任何权限。缺点是当您的应用程序被卸载时,您放在那里的文件会被删除。
根据 android R(API 级别 30)和 Android storage use cases and best practices 的最新更新,您可以使用下面的代码将图像保存在应用的缓存中
File file = new File(getContext().getExternalCacheDir() + File.separator + System.currentTimeMillis() + ".png");
我将文件路径设置为:
File file = new File(Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".png");
ImageCapture.OutputFileOptions outputFileOptions =
new ImageCapture.OutputFileOptions.Builder(file).build();
imageCapture.takePicture(outputFileOptions, Executors.newSingleThreadExecutor(),
new ImageCapture.OnImageSavedCallback() {
@Override
public void onImageSaved(ImageCapture.OutputFileResults outputFileResults) {
// insert your code here.
Log.d("PHOTO", "onImageSaved: saved");
}
@Override
public void onError(ImageCaptureException error) {
// insert your code here.
Log.d("PHOTO", "onError: " + error);
}
});
但出于某种原因,当我单击捕获图像按钮时,它会跳转到 onError 并记录以下内容:
onError: androidx.camera.core.ImageCaptureException: Failed to write or close the file
您的应用需要获得写入所需位置的权限。
您可以在清单和运行时请求 WRITE_EXTERNAL_STORAGE
,以允许您在请求的位置写入...直到 Android 9。Android 10 及以后不支持普通应用在外存根目录创建任意目录
您选择getExternalFilesDir()
意味着您不需要任何权限。缺点是当您的应用程序被卸载时,您放在那里的文件会被删除。
根据 android R(API 级别 30)和 Android storage use cases and best practices 的最新更新,您可以使用下面的代码将图像保存在应用的缓存中
File file = new File(getContext().getExternalCacheDir() + File.separator + System.currentTimeMillis() + ".png");