Как я могу узнать папку изображений камеры телефона Android?

Я разрабатываю приложение камеры для Android.

Одним из требований является сохранение фотографий, сделанных в папке с фотографиями камеры устройства по умолчанию, то есть в папке, в которой их хранит собственная камера Android.

Как я могу выяснить, где родная камера хранит фотографии, которые она делает - насколько я понимаю, это может быть разным для разных производителей (Samsung, HTC, Motorola, Sony...) и моделей (Galaxy Tab, Galaxy S4... .)


person OC2PS    schedule 07.06.2013    source источник


Ответы (3)


Используйте getExternalStoragePublicDirectory().

с параметром DIRECTORY_PICTURES

(или, для других случаев использования, другие подобные параметры, такие как DIRECTORY_MOVIES)

person Alexander Kulyakhtin    schedule 07.06.2013
comment
Ах! Значит, DIRECTORY_PICTURES не возвращает каталог галереи верхнего уровня? Вот что меня смущало. - person OC2PS; 08.06.2013
comment
Я бы сказал, что DIRECTORY_DCIM лучше подходит: традиционное место для фотографий и видео при установке устройства в качестве камеры. При этом родная камера может делать все, что захочет, и вы не можете априори узнать, где эта камера хранит свои изображения. - person CommonsWare; 08.06.2013
comment
@CommonsWare Большое спасибо! Это действительно то, что я искал. - person Boris Strandjev; 14.10.2013
comment
@CommonsWare, но в этой папке обычно также есть папка миниатюр. можно ли получить папку самой камеры? или, может быть, мне следует просто игнорировать папки, начинающиеся с . ? - person android developer; 04.02.2014
comment
@androiddeveloper: но в этой папке обычно также есть папка с миниатюрами - обычно я не могу говорить, но DIRECTORY_DCIM может иметь подкаталоги, созданные пользователем или приложениями. можно ли получить папку самой камеры? -- у камеры нет папки. Приложения камеры могут размещать изображения в любом месте, будь то непосредственно в DIRECTORY_DCIM, в подкаталоге вне каталога DIRECTORY_DCIM или в любом другом месте. И есть много, много приложений для камеры. - person CommonsWare; 04.02.2014
comment
Понимаю. Почему в папке эскизов нет файла .nomedia, чтобы он не сканировался MediaStore? — это изображения, которые хранятся в папках, имена которых начинаются с . Быть игнорированным ? - person android developer; 04.02.2014
comment
Похоже, ответ найти только в одном каталоге, верно? есть ли способ перечислить все изображения папок лучше, чем просто запустить цикл for внутри SD-карты, чтобы проверить, где находится DIRECTORY_PICTURE? - person Huy Tower; 26.02.2015
comment
Как я могу получить каталог фотографий по умолчанию, сделанных камерой в Android? - person Abhishek T.; 25.07.2016

Я знаю, что это немного поздно для этого, но вы можете сделать это:

String CameraFolder="Camera";
File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString());
File[] files = CameraDirectory.listFiles();
for (File CurFile : files) {
      if (CurFile.isDirectory()) {
                CameraDirectory=CurFile.getName();
                break;
      }
}
final String CompleteCameraFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() + "/" + CameraFolder;

При желании вы можете выполнить свою операцию внутри цикла for.

person Anuraag Vaidya    schedule 25.01.2015
comment
Такой подход мне не кажется правильным. Например, в моем каталоге DCIM есть 4 папки. - person Dielson Sales; 08.10.2015

Дополнительная информация по этой теме. Вам необходимо добавить разрешение на доступ к внешнему хранилищу, иначе listFiles() всегда возвращает значение null. Добавьте ниже в свой AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.tomoima.filedirectory"
      xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
    ...
person tomoima525    schedule 21.04.2016