2013-06-07 21 views
11

Pracuję nad aplikacją aparatu dla systemu Android.Jak mogę znaleźć folder zdjęć z aparatu na telefonie z Androidem?

Jednym z wymogów jest zapisanie zdjęć zrobionych w domyślnym folderze ze zdjęciami z kamery, tj. Folderu, w którym przechowywana jest natywna kamera systemu Android.

Jak mogę dowiedzieć się, gdzie jest przechowywany aparat natywny do robienia zdjęć? Rozumiem, że może to być różne dla różnych marek (Samsung, HTC, Motorola, Sony ...) i modeli (karta Galaxy, Galaxy S4 ...)

Odpowiedz

18

Zastosowanie getExternalStoragePublicDirectory()

parametrem DIRECTORY_PICTURES

(lub innych przypadków użycia, inne podobne parametry, takie jak DIRECTORY_MOVIES)

+0

Ah! Więc DIRECTORY_PICTURES nie zwraca katalogu galerii najwyższego poziomu? To mnie myliło. – OC2PS

+13

Twierdzę, że 'DIRECTORY_DCIM' lepiej pasuje:" Tradycyjna lokalizacja zdjęć i filmów podczas montażu urządzenia jako kamery ". Biorąc to pod uwagę, "kamera natywna" jest gotowa robić, co chce, i nie ma sposobu * a priori *, aby wiedzieć, gdzie ta kamera przechowuje swoje obrazy. – CommonsWare

+0

@CommonsWare Dzięki bardzo! Naprawdę tego właśnie szukałem. –

4

Wiem, że jest trochę za późno, ale możesz to zrobić:

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; 

Opcjonalnie możesz wykonać operację wewnątrz pętli for.

+0

To podejście nie wydaje mi się właściwe. Na przykład mój katalog DCIM ma 4 foldery wewnątrz. –

+0

Może zawierać "Zrzuty ekranu",/miniatury, inne foldery aplikacji .... – OWADVL

0

Dodatkowe informacje na ten temat. Musisz dodać uprawnienia dostępu do pamięci zewnętrznej lub zawsze zwraca wartość NULL listFiles(). Dodaj poniżej do swojego 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 
    ...