在Android中拍照时,如何提供与图库中的路径相同的文件路径?

时间:2015-08-05 01:37:25

标签: android

我尝试使用相机意图拍摄照片,并希望获取完整尺寸图像的文件路径。我正在关注http://developer.android.com/training/camera/photobasics.html的教程。问题是,当我使用MediaStore.Images.Media.DATA查看MediaStore.Images.Media.EXTERNAL_CONTENT_URI列中的文件路径时,图像具有不同的路径。如何提供相同的文件路径?我查看了taking a photo and placing it in the Gallery,虽然只是将Environment.DIRECTORY_PICTURES更改为Environment.DIRECTORY_DCIM,但它仍然无法正常工作。

以下是拍摄照片的代码。

private Uri photoPath;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == REQUEST_IMAGE_CAPTURE) {
            getContentResolver().notifyChange(photoPath, null);
            System.out.println(photoPath);
        }
    }

}

@Override
public void onClick(View v) {
if (v.getId() == R.id.camera_button) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        try {
            String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
            String image = "IMG_" + timestamp;
            File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
            File photo = File.createTempFile(image, ".jpg", storageDir);
            photoPath = Uri.fromFile(photo);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, photoPath);
            startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
        } catch (IOException e) {
            Log.e(TAG, e.getMessage());
        }
    }
}

上面的代码生成文件路径/storage/emulated/0/Pictures/IMG_20150805_121624.jpg,而它在库中实际为/storage/emulated/0/DCIM/100MEDIA/IMAG0531.jpg。前一条路径实际上是我的形象(正如我在photoPath上指定的那样),但我希望得到后一条路径。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您必须使用Environment.DIRECTORY_DCIM

android API DOC清楚地显示了可以使用的各种目录的详细信息。 我希望这可以帮助您将文件保存到/storage/emulated/0/DCIM/