2012-06-16 22 views
5

Chciałbym uzyskać listę piosenek z albumu przez odpytywanie MediaStore z CursorLoaderpiosenki kwerendy album ze CursorLoader

Jak mogę to zrobić? Mogę pobrać wszystkie utwory urządzenia z tym kodem:

static final String[] TRACK_SUMMARY_PROJECTION = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE}; 

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; 
    String select = null; 
    return new CursorLoader(getActivity(), MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
        TRACK_SUMMARY_PROJECTION, select, null, 
        sortOrder); 
} 

Co należy dodać do kodu lub modyfikacji, aby filtrować utwory konkretnego albumu?

Odpowiedz

17

iść krok po kroku

Krok 1 Spójrz nazwy albumów załadowanych na ciebie telefon

Aby zażądać kursor do informacji albumu

String[] columns = { android.provider.MediaStore.Audio.Albums._ID, 
     android.provider.MediaStore.Audio.Albums.ALBUM }; 

cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, 
     columns, null, null, null); 

Krok 2 Po znalezieniu cały album nazwy.Możesz zapisać nazwę żądanego albumu i przesłuchać utwory z niego

Aby zażądać kursor zawierający piosenkę informacji dla konkretnego albumu

String[] columns = { MediaStore.Audio.Media.DATA, 
      MediaStore.Audio.Media._ID, 
      MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.DISPLAY_NAME, 
      MediaStore.Audio.Media.MIME_TYPE, }; 

     String where = android.provider.MediaStore.Audio.Media.ALBUM 
      + "=?"; 

     String whereVal[] = { Album name from which you want songs }; 

     String orderBy = android.provider.MediaStore.Audio.Media.TITLE; 

     cursor = managedQuery(
      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, 
      where, whereVal, orderBy); 

Teraz zwrócić ten kursor.

Poniżej zamieszczono kod źródłowy do pobrania nazwy albumu i wszystkich utworów w nim zawartych.

package org.vipul; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.util.Log; 

public class HelloActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     String[] columns = { android.provider.MediaStore.Audio.Albums._ID, 
       android.provider.MediaStore.Audio.Albums.ALBUM }; 

     Cursor cursor = managedQuery(
       MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, columns, null, 
       null, null); 

     if (cursor.moveToFirst()) { 
      do { 
       Log.v("Vipul", 
         cursor.getString(cursor 
           .getColumnIndex(android.provider.MediaStore.Audio.Albums.ALBUM))); 
      } while (cursor.moveToNext()); 
     } 

     // I want to list down song in album Rolling Papers (Deluxe Version) 

     String[] column = { MediaStore.Audio.Media.DATA, 
       MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, 
       MediaStore.Audio.Media.DISPLAY_NAME, 
       MediaStore.Audio.Media.MIME_TYPE, }; 

     String where = android.provider.MediaStore.Audio.Media.ALBUM + "=?"; 

     String whereVal[] = { "Rolling Papers (Deluxe Version)" }; 

     String orderBy = android.provider.MediaStore.Audio.Media.TITLE; 

     cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
       column, where, whereVal, orderBy); 

     if (cursor.moveToFirst()) { 
      do { 
       Log.v("Vipul", 
         cursor.getString(cursor 
           .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME))); 
      } while (cursor.moveToNext()); 
     } 

    } 
} 
+0

Wielkie dzięki za tę jasną odpowiedź. – Jecimi

+0

Serdecznie zapraszamy :) –

+0

Witam vipul, to było coś, czego szukałem i nie mogłem znaleźć nigdzie, po wielu poszukiwaniach w końcu zgrabny i łatwy do zrozumienia kod, obecnie uczę się Androida i chciałbym wiedzieć, czy możemy wyodrębnij informacje o albumie, takie jak obraz albumu, i pokaż to samo przy użyciu listy. W ten sposób jest we wszystkich odtwarzaczach multimedialnych, dzięki za tak doskonały kod – 1234567