2010-12-19 12 views
11

Wie erhalten Sie eine Liste aller Kamerabilder eines Android-Geräts?Liste aller Kamerabilder in Android

Ist es durch den MediaStore? Wie?

+0

Dies kann Ihnen helfen http://groups.google.com/group/android-developers/browse_thread/thread/e704c7c928dd2682 – ninjasense

Antwort

33

Die Galerie App erhält Kamerabilder unter Verwendung einer content resolver über Images.Media.EXTERNAL_CONTENT_URI und Filtern der Ergebnisse von Media.BUCKET_ID. Der Eimer Kennung wird mit dem folgenden Code bestimmt:

public static final String CAMERA_IMAGE_BUCKET_NAME = 
     Environment.getExternalStorageDirectory().toString() 
     + "/DCIM/Camera"; 
public static final String CAMERA_IMAGE_BUCKET_ID = 
     getBucketId(CAMERA_IMAGE_BUCKET_NAME); 

/** 
* Matches code in MediaProvider.computeBucketValues. Should be a common 
* function. 
*/ 
public static String getBucketId(String path) { 
    return String.valueOf(path.toLowerCase().hashCode()); 
} 

auf dieser Grundlage, hier ist ein Ausschnitt alle Kamerabilder zu erhalten:

public static List<String> getCameraImages(Context context) { 
    final String[] projection = { MediaStore.Images.Media.DATA }; 
    final String selection = MediaStore.Images.Media.BUCKET_ID + " = ?"; 
    final String[] selectionArgs = { CAMERA_IMAGE_BUCKET_ID }; 
    final Cursor cursor = context.getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      selection, 
      selectionArgs, 
      null); 
    ArrayList<String> result = new ArrayList<String>(cursor.getCount()); 
    if (cursor.moveToFirst()) { 
     final int dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     do { 
      final String data = cursor.getString(dataColumn); 
      result.add(data); 
     } while (cursor.moveToNext()); 
    } 
    cursor.close(); 
    return result; 
} 

Für mehr Informationen, die Imagemanager und Abbildungsliste Klassen der Galerie Bewertung App-Quellcode

+4

Nicht alle Geräte, die aufgenommenen Bilder/Videos speichern zu „/ DCIM/Kamera“. HTC Wunsch HD, zum Beispiel, speichert in "/ DCIM/100MEDIA" –

+23

Und wir sollten HTC Desire HD dafür hassen. – hpique

+3

Sie können jedoch nur alle Dateien mit File API auflisten, anstatt DB-Cursor zu verwenden. –