Android - 从相机存储照片的2条路径拍摄照片

时间:2017-01-18 15:47:15

标签: android android-camera-intent

我可以在指定位置保存相机的全尺寸照片。但是,照片将保存在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操作系统的三星手机。这种行为不存在。拍摄的照片仅在指定的路径上保存。

0 个答案:

没有答案