1

我正在尝试从我的应用程序调用默认设备相机以使用意图android.provider.MediaStore.ACTION_IMAGE_CAPTURE拍照。一切似乎都工作正常,除了当我单击并保存它存储在两个位置的特定图像时

1. At the default camera location.
2. At the location which i am passing with intent.

只希望第二个选项发生,而不是第一个。我认为在使用的定义位置创建一个 .nomedia 文件可以确保图片不会被列为图库的一部分,但后来我发现图片存储在两个位置。

我的相关代码部分是:

在活动中:

Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
try {
    tempDir = Environment.getExternalStorageDirectory();
    // place where to store camera taken picture
    photo = createTemporaryFile("picture", ".jpg", tempDir);
    photo.delete();
    } catch (Exception e) {
                        Toast.makeText(this, "Please check SD card! Error in fetching image",
                                Toast.LENGTH_SHORT).show();
                   }
 if (photo != null) {
           Uri mImageUri = Uri.fromFile(photo);
           Log.i(TAG, "" + mImageUri.toString());
           intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
 } 
startActivityForResult(intentCamera, CAMERA_PIC_REQUEST);

对应的方法。

public File createTemporaryFile(String part, String ext,File tempDir) throws Exception {
tempDir = new File(tempDir.getAbsolutePath() +"/temp/");
if (!tempDir.exists()) {
   tempDir.mkdir();
   }
createNoMediaFile(tempDir.getAbsolutePath());
return File.createTempFile(part, ext, tempDir);
}

有没有办法可以避免 1 即将图像保存到默认画廊位置。谢谢。

4

1 回答 1

1

onActivityResult 会返回图像的 Uri,您可以检索图像的路径,从该位置复制图像并保存在您想要的位置,然后从图库中删除。

于 2012-05-04T04:18:35.847 回答