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

1

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

По сути, я пытаюсь создать приложение для камеры на основе Android Camera 2 API (я только что скачал пример кода с https://github.com/googlesamples/android-Camera2Basic). и я застрял, потому что я пытаюсь сохранить снимок, сделанный камерой, в папку "Pictures" внутри " /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" не была создана, нада.

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

PS Почти забыл сказать, я уже добавил разрешение в 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" />
Теги:
camera
external

1 ответ

1

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

how-can-i-access-storage-emulated-0-dcim-on-android-device, папка "/storage/emulated/" в действительности не существует. Это то, что можно назвать "символической ссылкой" или, проще говоря, ссылкой на место хранения реальных данных. Вам нужно будет найти фактическое физическое местоположение на вашем устройстве, где оно хранится.

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

  • 0
    Я не знаю, человек ..., это немного странно, потому что если я попытаюсь использовать метод "getExternalFilesDir ()", он будет сохранен в " /storage/emulated/0/Android/data/com.***.***[the package name]/files/Pictures/newPicture.jpg "верно? Ну, тост покажет, что он там сохранен, и когда я проверяю его с помощью ES File explorer, newPicture.jpg был создан " newPicture.jpg ". newPicture.jpg том, я думаю, что тост показывает правильные вещи, просто по какой-то причине он там не сохранен ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню