2011-03-25 16 views
8

Estoy escribiendo una aplicación para reproductor de música y me pregunto dónde debería buscar los archivos de música del usuario. Quiero encontrar todas las canciones que la aplicación de Música normalmente encuentra y tengo curiosidad de cómo esa aplicación encuentra las canciones. ¿Hay una variable enum para una carpeta específica? ¿Solo una búsqueda recursiva de la tarjeta sd? Sé que en la tarjeta SD de mi teléfono hay una carpeta de Música; ¿Es así como está en cada dispositivo Android y debería buscar recursivamente esa carpeta? ¿O debería simplemente pedirle al usuario que encuentre la carpeta?Ubicación de archivos de música de Android?

Respuesta

14

Puede encontrar todos los archivos de música de sdcard utilizando la función siguiente.

public void getAllSongsFromSDCARD() 
{ 
    String[] STAR = { "*" };   
    Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

    cursor = managedQuery(allsongsuri, STAR, selection, null, null); 

    if (cursor != null) { 
     if (cursor.moveToFirst()) { 
      do { 
       String song_name = cursor 
         .getString(cursor 
           .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); 
       int song_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media._ID)); 

       String fullpath = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.DATA)); 


       String album_name = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ALBUM)); 
       int album_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)); 

       String artist_name = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ARTIST)); 
       int artist_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ARTIST_ID)); 



      } while (cursor.moveToNext()); 

     } 
     cursor.close(); 
    } 
} 
+0

Impresionante, eso realmente me abre los ojos a algo de la estructura del SO Android. Esta es una aplicación tan simple, pero estoy aprendiendo mucho. Gracias. –

+0

bienvenida ... –

2

Android escanea automáticamente todas las tarjetas SD externas para audio e indexa estos datos; consulte la clase MediaStore.Audio para obtener más información. Esto le permite consultar por álbumes, artistas, géneros y listas de reproducción. Si solo desea obtener una lista de archivos multimedia, consulte el proveedor de contenido MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.

Cuestiones relacionadas