Прежде всего, я тестирую это приложение, используя мой 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" />