2013-06-07 3 views
11

Я разрабатываю приложение для Android для Android.Как узнать папку с камерами на телефоне Android?

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

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

ответ

18

Использование getExternalStoragePublicDirectory()

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

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

+0

Ah! Итак, DIRECTORY_PICTURES не возвращает каталог галереи верхнего уровня? Вот что меня смутило. – OC2PS

+13

Я бы сказал, что 'DIRECTORY_DCIM' лучше подходит:« Традиционное расположение для изображений и видео при установке устройства в качестве камеры ». При этом «родная камера» может делать все, что захочет, и нет априорно *, чтобы вы знали, где эта камера хранит свои изображения. – CommonsWare

+0

@CommonsWare Большое спасибо! Это действительно то, что я искал. –

4

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

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; 

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

+0

Этот подход мне не кажется правильным. Например, мой каталог DCIM имеет 4 папки внутри. –

+0

Он может иметь «скриншоты»,/миниатюры, папки других приложений .... – OWADVL

0

Дополнительная информация по этой теме. Вам нужно добавить разрешение на доступ к внешнему хранилищу, или 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 
    ...