Невозможно создать каталог и сохранить снимок, сделанный камерой, в хранилище / emulated / 0 - PullRequest
0 голосов
/ 07 января 2019

Прежде всего, я тестирую это приложение, используя мой Google Pixel XL (1-го поколения, 32 ГБ версия, работает под управлением Android 9 API уровня 28)

По сути, я пытаюсь создать приложение для камеры на основе Android Camera 2 API (я только что загрузил пример кода с https://github.com/googlesamples/android-Camera2Basic). и застрял, потому что я пытаюсь сохранить снимок, сделанный камерой в папку «Изображения» внутри «/storage/emulated/0/».

Однако, по какой-то причине, даже если мне кажется, что я могу это сделать, папки и файла изображения нет, когда я проверил их в ES File Explorer.

Я уже пробовал 3 метода:

Попытка № 1:

    mFile = new File(getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "newPicture.jpg");
    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){

        mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "picture.jpg");
        mFile.mkdirs();
    }

Попытка № 2:

    File filePath = new File(Environment.getExternalStorageDirectory().getPath(),"randomFolder");
    if(!filePath.exists()){
        filePath.mkdirs();
    }
    String fullPathName = filePath.getAbsolutePath() + "/" + "newPicture.jpg";
    mFile = new File(fullPathName);

Попытка № 3:

    mFile = new File(fullPathName);
    File filePath = new File(Environment.getExternalStorageDirectory() + "/Pictures/");
    if (!filePath.exists()){
        filePath.mkdirs();
    }
    mFile = new File(filePath,"newPicture.jpg");

mFile - это путь к файлу, в который будет сохраняться «newPicture», в основном он должен быть сохранен в «/storage/emulated/0/Pictures/newPicture.jpg"

Теперь я попытался использовать метод getExternalFilesDir (), чтобы изображение было сохранено в /storage/emulated/0/Android/data/com.***.***[the package name]/files/Pictures/newPicture.jpg ", и в этом случае ЭТО ПОЛНОСТЬЮ РАБОТАЕТ! Однако я ДЕЙСТВИТЕЛЬНО хочу сохранить изображение в каталоге /storage/emulated/0, потому что я хотите, чтобы пользователь мог впоследствии легко получить доступ к данным.

Чтобы лучше это проиллюстрировать, я записал запущенное приложение, а затем сделал снимок и сохранил его в формате GIF, загрузив его в imgur прямо здесь: https://imgur.com/Szpc1HR

Видите это? Кажется, что изображение успешно сохранено в «/storage/emulated/0/Pictures/newPicture.jpg», но затем, когда я зашел в ES File Explorer, чтобы проверить изображение, папка «Pictures» не была создана, нада.

Я буквально нахожусь в своем уме, ха-ха, кто-нибудь знает решение этой проблемы? Любой совет будет с благодарностью

P.S. Почти забыл сказать, я уже добавил разрешение в AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

1 Ответ

0 голосов
/ 07 января 2019

Как кто-то сказал в этом посте:

как-кан-я-доступа при хранении эмулировать-0-DCIM-на-андроид-устройства , Папка "/ storage / emulated /" на самом деле не существует. Это то, что можно назвать «символической ссылкой» или, проще говоря, ссылкой на то, где хранятся реальные данные. Вам нужно найти фактическое физическое местоположение на вашем устройстве, где оно хранится.

Может быть, эта ссылка поможет, или эта Невозможно создать каталог в / storage / emulated / 0 в эмуляторе .

...