我在basic tutorial from Android之后使用简单的相机意图。在this section中,它谈到了将映像文件保存到磁盘。但是,我还没有配置任何这些步骤,但在捕获图像并返回我的活动后,它仍然会自动将我的图像保存到/ storage / emaulated / 0 / DCIM / Camera中的磁盘。这似乎并不是本教程所暗示的内容 - 我的清单中甚至没有WRITE_EXTERNAL_STORAGE权限,因此我不确定为什么它甚至可以写入磁盘。我不希望图像自动保存到此目录,而是保存到我选择的目录中。我知道如何将图像保存到自定义目录,但是如何防止将图像保存到上面目录的默认行为?
答案 0 :(得分:1)
当您尝试接受phto时,实际上您开始调用设备中安装的Camera
应用。你没有设置WRITE_EXTERNAL_STORAGE
,哦是的,但Camera
的应用程序设置了。当您尝试拍照但想将照片存储到文件中时,您可以尝试这样做:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(AVATAR_FILE_TMP));
intent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true);
startActivityForResult(intent, TAKING_PICTURE_INDEX);
filePath
是您Camera
拍摄的图像文件的路径。拍照使用Camera
App。
答案 1 :(得分:0)
如果使用以下代码,则不会保存默认的相机胶卷。
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, receiptUri);
startActivityForResult(takePictureIntent, 1);
但你需要在清单中使用WRITE权限。
答案 2 :(得分:0)
这是一种方法,可以在"图片"中创建一个带有应用名称的文件夹。 SD卡上的文件夹。您可以更改它以反映您的需求。
// Create a File for saving an image or video
private static File getOutputMediaFile(int type){
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyAppDirectory");
// This location works best if you want the created images to be shared
// between applications and persist after your app has been uninstalled.
// Create the storage directory if it does not exist
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("MyAppDirectory", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
return mediaFile;
}
您可以在需要时调用此方法:
File file = getOutputMediaFile(MEDIA_TYPE_IMAGE);
答案 3 :(得分:0)
如果有
,请评论此行MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());