2012-06-16 5 views
5

würde Ich mag die Liste der Songs eines Albums erhalten, indem die Abfrage der MediaStore mit CursorLoaderAbfrage Songs eines Albums mit CursorLoader

Wie kann ich das tun? Ich kann alle Lieder des Geräts mit diesem Code erhalten:

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); 
} 

Was soll ich mit dem Code oder Modifikation hinzufügen Songs eines bestimmten Album zu filtern?

Antwort

17

Go Schritt für Schritt

Schritt 1 Geben Sie die Namen von Alben auf dem Mobiltelefon geladen

So fordern Cursor für Informationen über das Album

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); 

Schritt 2 Nachdem Sie alle Alben finden Namen. Sie können den gewünschten Albumnamen aufschreiben und Songs davon abfragen

So fordern Cursor Song-Informationen für bestimmtes Album

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); 

nun diesen Cursor zurückkehren enthält.

Für Ihre Referenz unten ist der Quellcode zum Abrufen des Albumnamens und aller darin enthaltenen Songs.

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

Vielen Dank für diese klare Antwort. – Jecimi

+0

Sie sind herzlich willkommen :) –

+0

Hallo Vipul, das war etwas, was ich gesucht habe und konnte nirgendwo finden, nach einer Menge Suche endlich ein ordentliches und leicht zu verstehen Code, ich lerne derzeit Android und möchte wissen wir können extrahieren Sie die Albuminfo wie Albumbild und zeigen Sie dasselbe mit einem Listenansicht. Wie es in allen Media Playern ist, danke für solch einen ausgezeichneten Code – 1234567

Verwandte Themen