我可以在指定位置保存相机的全尺寸照片。但是,照片将保存在2个路径中 - 一个由代码指定,另一个是SD卡DCIM文件夹。
下面是获取全尺寸照片的代码,它位于Activity中,fileUri和mFilePath是类级变量。
private void openCamera() {
Intent takePictureIntent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
File photoFile = null;
try {
photoFile = createFile();
} catch (IOException e) {
e.printStackTrace();
}
if (photoFile != null) {
fileUri = FileProvider.getUriForFile(context, AUTHORITY, photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
fileUri);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent,
REQUEST_IMAGE_CAPTURE);
}
}
}
private File createFile() throws IOException {
String state = Environment.getExternalStorageState();
File storageDir;
if (state.equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {
storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
} else {
storageDir = getFilesDir();
}
if (!storageDir.exists()) {
storageDir.mkdirs();
}
File image = File.createTempFile(“app” + System.currentTimeMillis(),
".jpg", storageDir);
mFilePath = image.getAbsolutePath();
return image;
}
private void galleryAddPic() {
MediaScannerConnection.scanFile(this, new String[]{
mFilePath},
null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_IMAGE_CAPTURE) {
galleryAddPic();
}
}
我不确定此设备或平台是否具体。我正在Moto G(第2代)和5.0 Android OS上进行测试。我尝试更改相机应用程序的存储设置,但它始终保存在2个路径。我不希望它在SD卡DCIM文件夹中保存。有人遇到过这样的问题吗?知道如何解决这个问题吗?
编辑:我尝试过拥有7.0操作系统的三星手机。这种行为不存在。拍摄的照片仅在指定的路径上保存。