Как запретить камере сохранять копию с моего изображения, когда я беру его в свое приложение - PullRequest
0 голосов
/ 08 октября 2018

Я сделал приложение, которое делает снимок и сохраняет его на SD-карте с расширением, например (.x).Все в порядке, но каждый раз, когда я делаю снимок, он сохраняется в двух местах: мой каталог и каталог моей камеры.

Моя проблема: как остановить его сохранение в галерее?

      Uri mHighQualityImageUri = generateTimeStampPhotoFileUri();
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mHighQualityImageUri);
        startActivityForResult(intent, 20);


     private Uri generateTimeStampPhotoFileUri() {

        Uri photoFileUri = null;
        File outputDir = getPhotoDirectory();
        if (outputDir != null) {
            Time t = new Time();
            t.setToNow();
            File photoFile = new File(outputDir, System.currentTimeMillis()
                    + ".x");
            photoFileUri = Uri.fromFile(photoFile);
        }
        return photoFileUri;
    }



     private File getPhotoDirectory() {
        File outputDir = null;
        String externalStorageStagte = Environment.getExternalStorageState();
        if (externalStorageStagte.equals(Environment.MEDIA_MOUNTED)) {

            File photoDir=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Android/data/mariam.billing/files");
            outputDir = new File("/sdcard/Billing/");
            if (!outputDir.exists())
                if (!outputDir.mkdirs()) {
                    Toast.makeText(
                            this,
                            "Failed to create directory "
                                    + outputDir.getAbsolutePath(),
                            Toast.LENGTH_SHORT).show();
                    outputDir = null;
                }
        }
        return outputDir;
    }

int x=0;
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (this.requestCode == requestCode && resultCode == RESULT_OK) {
            imageHolder.setImageURI(mHighQualityImageUri);
            x=1;
        }
    }

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Причина, по которой вы получаете дубликаты изображений, заключается в том, что вы используете два приложения камеры одновременно (то есть: камера по умолчанию и та, которую вы создаете).Вы вызываете намерение для встроенной камеры, и поэтому камера по умолчанию сохранит свою собственную копию, в то время как ваше приложение сделает то же самое.Вы избегаете создания пользовательских камер, таких как Facebook, Instagram и т. Д. Но вы можете творчески создавать код, если вы собираетесь использовать приложение для загрузки изображений.Вы можете сделать так, чтобы ваша камера делала снимки, и после загрузки или завершения этого события ваше приложение удаляет снятые изображения.Или лучше сделайте это, храните ваши изображения в скрытой папке.Вы можете сделать папку хранилища скрытой, добавив точку (.) Перед именем папки, и снова, в конце вашего мероприятия, ваше приложение удалит эту скрытую папку.Но опять же, это не очень хорошая практика.

0 голосов
/ 08 октября 2018

Это не твоя вина.Ваш код выглядит правильно, а приложение камеры на вашем устройстве соответствует вашему запросу EXTRA_OUTPUT.

Но это приложение решает сохранить копию фотографии в другом месте.Попробуйте установить приложение Google Camera из Play Store.Я считаю, что если вы используете его для выполнения своего намерения ACTION_IMAGE_CAPTURE, вы получите только одну копию изображения.

Попробуйте некоторые другие приложения из Play Store, в частности приложение Open Camera .Там вы можете скачать исходный код и узнать, что он на самом деле делает при запуске намерения.

Существуют тысячи приложений для камер, встроенных в различные устройства и доступных для загрузки.Они ведут себя и ведут себя по-разному.Если вам нужно более последовательное поведение, вы можете взять фотографии из своего приложения, используя API-интерфейс камеры Android или одну из библиотек, которые облегчают такую ​​интеграцию.

Обновление , возможно, существуетв прямом эфире сообщение об ошибке датируется августом 2011 года, вау!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...