2012-06-16 18 views
5

me gustaría obtener la lista de las canciones de un álbum mediante la consulta del MediaStore con CursorLoadercanciones de consulta de un álbum con CursorLoader

¿Cómo puedo hacer esto? Puedo conseguir todas las canciones del dispositivo con este código:

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

¿Qué debo añadir que el código o modificación para filtrar las canciones de un álbum en particular?

Respuesta

17

ir paso a paso

Paso 1 Mira los nombres de los álbumes cargados en su teléfono

Para solicitar el cursor para obtener información del álbum

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

Paso 2 Una vez que encuentre toda álbum nombres.Puede escribir el nombre del álbum deseado y consultar canciones desde él

Solicitar cursor que contiene información de la canción en particular para el álbum

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

Ahora regresa este cursor.

Para su referencia a continuación es el código fuente para recuperar el nombre del álbum y todas las canciones en el mismo.

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

Muchas gracias por esta respuesta clara. – Jecimi

+0

De nada :) –

+0

hola vipul, esto es algo que he estado buscando y no he podido encontrar en ningún lado, después de mucha búsqueda finalmente un código claro y fácil de entender, actualmente estoy aprendiendo android y me gustaría saber si podemos extrae la información del álbum como la imagen del álbum y muestra el mismo usando una lista de visitas. Así es en todos los reproductores multimedia, gracias por un código tan excelente – 1234567

Cuestiones relacionadas