在Android中拍照(使用相机应用程序)而无需创建临时文件

时间:2019-04-06 00:32:15

标签: android

我想允许我的android应用程序的用户使用默认的相机应用程序拍照

我遵循了here中的指南,该指南使用FileProvider获取以content://开头的URI。但这是通过首先创建一个临时文件,然后获取其URI,然后将该URI发送到将保存图像的Camera应用程序来实现的。

这对我来说听起来很愚蠢,因为如果用户改变主意并且不拍照,则不会删除临时文件。

这是Andoid指南提供的代码

private File createImageFile() throws IOException {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(imageFileName, ".jpg", storageDir);
    return image;
}

static final int REQUEST_TAKE_PHOTO = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        // Create the File where the photo should go
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            // Error occurred while creating the File
            ...
        }

        if (photoFile != null) {
            Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile);
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }
    }
}

是否有一种无需首先创建文件即可获取正确uri的方法?还是保存照片的更好方法?

0 个答案:

没有答案