2013-07-15 18 views
23

Uygulamamın kullanıcısı cihazında kayıtlı olan medyaya erişmek için iki Cursor nesne oluşturmak üzere android.content.CursorLoader sınıfını kullanıyorum. Kullanıcıya, Android Galeri uygulamasından siparişi koruyan kayıtlı resimlerinin ve videolarının ızgara görünümünü vermek istiyorum.Erişim İmzasız görüntü ve video aynı İmleç

Şu an için bir Cursor kullanıyorum, Resimler'e erişmek ve bir Video'ya erişmek için kullanıyorum. Bu yaklaşımla, tüm görüntüler tüm videolardan önce gelir (yani bunlar iki ayrı gruptadır). Aynı Cursor'dan hem Görüntü hem de Video'ya erişmenin bir yolu var mı? Değilse, bu medyaya cihazda erişmenin daha iyi bir yolu var mı? Video

CursorLoader cursorLoader = new CursorLoader(
    mContext, 
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
    IMAGE_PROJECTION, 
    null, 
    null, 
    MediaStore.Images.Media._ID + " desc" 
); 
    mImageCursor = cursorLoader.loadInBackground(); 

Ve: Resim Daha

:

Başvuru için, burada kullanıyorum kodudur

CursorLoader cursorLoader = new CursorLoader(
    mContext, 
    MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
    VIDEO_PROJECTION, 
    null, 
    null, 
    MediaStore.Video.Media._ID + " desc" 
); 
    mVideoCursor = cursorLoader.loadInBackground(); 

cevap

62
araştırma çok sonra

ve kaynak kodu ile uğraşırken, Sonunda Android dosya sistemi ile biraz daha aşina oldum. son kod paylaşımı için

// Get relevant columns for use later. 
String[] projection = { 
    MediaStore.Files.FileColumns._ID, 
    MediaStore.Files.FileColumns.DATA, 
    MediaStore.Files.FileColumns.DATE_ADDED, 
    MediaStore.Files.FileColumns.MEDIA_TYPE, 
    MediaStore.Files.FileColumns.MIME_TYPE, 
    MediaStore.Files.FileColumns.TITLE 
}; 

// Return only video and image metadata. 
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "=" 
     + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE 
     + " OR " 
     + MediaStore.Files.FileColumns.MEDIA_TYPE + "=" 
     + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO; 

Uri queryUri = MediaStore.Files.getContentUri("external"); 

CursorLoader cursorLoader = new CursorLoader(
    this, 
    queryUri, 
    projection, 
    selection, 
    null, // Selection args (none). 
    MediaStore.Files.FileColumns.DATE_ADDED + " DESC" // Sort order. 
); 

Cursor cursor = cursorLoader.loadInBackground(); 
+4

sayesinde;: Images ve Video hem ilgili bilgilere erişebilirsiniz tek Cursor almak için aşağıdaki kullanılır Bu bana gerçekten yardımcı oldu! – scientiffic

+0

bir sorun var, ana görüntülere/verilere erişiyorsunuz .. küçük resimlere değil. Querying MediaStore.Images.İmleç öğelerinin tümü için çok küçükler çok ağırdır. Herhangi bir fikir? – Umair

+0

Videolarda oynatma simgesini nasıl gösterebilirim? –

İlgili konular