Два изображения сняты камерой и не могут удалить одно из папки DCIM/Camera

Я снимаю изображение с моего устройства Nougat и сохраняю изображение в папке ABC, работает нормально. После захвата изображения я отправляю их на сервер и, как только он загружается, я удаляю изображения из папки ABC до тех пор, пока это не работает нормально, но я заметил, что камера создает два изображения, одно из которых хранится в папке ABC, а другое - в DCIM/Camera. папка. Также я указываю имя захваченного изображения при сохранении, но у одного в DCIM/Camera есть имя, сгенерированное системой, пожалуйста, руководство, как удалить это изображение из папки DCIM/Camera Вот мой код

Открытая камера

 private void openCamera() {
    destination = null;
    PackageManager pm = getPackageManager();
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        try {
            String originalfileName = getFilenameOrgImage();
            File root = new File(ConstantData.IMAGE_STORAGE_LOCAL_PATH + File.separator);
            if (!root.exists()) {
                root.mkdirs();
            }
            destination = new File(originalfileName);
            Log.d("destination",destination.getAbsolutePath());
                Uri photoURI = FileProvider.
                        getUriForFile(this, getPackageName() + ".provider", destination);
                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                    startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
                }

        } catch (Exception e) {
            e.printStackTrace();
            CommonMethods.showToast(this, getResources().getString(R.string.please_try_again));
        }
    } else {
        CommonMethods.showToast(this, getResources().getString(R.string.camera_doesnt_support));
    }
}

onActivityResult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        try {
            if (resultCode == Activity.RESULT_OK) {
                if (requestCode == REQUEST_IMAGE_CAPTURE) {
                    FileInputStream in = new FileInputStream(destination);
                    BitmapFactory.Options options = new BitmapFactory.Options();
                    options.inSampleSize = 10;
                    Log.d("IMAGE",destination.getAbsolutePath());
                    treeDetailsModels.get(imgClickPos).setName(imagename);
                    treeDetailsModels.get(imgClickPos).setImgDestinationPath(destination);

                    View v = viewPager.findViewWithTag("pos" + imgClickPos);
                    ImageView ivBackground = (ImageView) v.findViewById(R.id.ivPhoto);
                    Bitmap bmp = BitmapFactory.decodeStream(in, null, options);
                    ivBackground.setImageBitmap(bmp);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Пользовательское местоположение

public static final String IMAGE_STORAGE_LOCAL_PATH = Environment.getExternalStorageDirectory().getPath().toString() + "/ABC";

Добавлено это предоставить для манифеста

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

Дорожка

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="ABC/"/>
</paths>

1 ответ

Но я заметил, что камера создает два изображения, одно из которых хранится в папке ABC, а другое - в папке DCIM/Camera.

Ваш код запускает стороннее приложение камеры. Это приложение было написано другими программистами, и эти программисты могут делать все, что хотят. Они не должны сохранять изображение дважды, но они могут это сделать.

Пожалуйста, руководство, как удалить это изображение из папки DCIM/Camera

Существует около 2 миллиардов Android-устройств с сотнями различных предустановленных приложений для камер и сотнями других приложений для камер, доступных в Play Store и других местах. Любой из этих сотен приложений камеры может быть запущен вашим кодом. Любое из этих приложений камеры может делать все, что угодно. Некоторые могут создавать дополнительные копии фотографии. Некоторые могут загрузить фото на свои серверы. Некоторые могут изменить фотографию. Большинство, надеюсь, не сделают ничего из этого... но вы не получите голос.

Итак, ваш выбор:

  1. Живите с побочными эффектами некоторых приложений камеры, такими как дополнительные копии изображения, или

  2. Хватит фотографировать, используя ACTION_IMAGE_CAPTURE (либо делайте фотографии самостоятельно, используя аппаратную часть камеры, либо просто прекратите фотографировать целиком)

Другие вопросы по тегам