2010-09-16 17 views
8

¿Cómo hago para leer el género al que está asociada una canción? Puedo leer la canción, pero ¿cómo agarro el género para esa canción, dónde está almacenada?Obtiene el género de una canción

Gracias!

+0

También estoy buscando la misma. – Sandy

+0

Mira [aquí] [1] [1]: http://stackoverflow.com/questions/9785370/display-all-song-from-the-sd-card-genre-wise – user4232

Respuesta

-2

Puede obtenerlo del archivo mp3, respectivamente, de sus ID3-Tags cuando se configuró allí. Debería haber algunas bibliotecas de java que le ayuden a acceder a la etiqueta de tesis desde un archivo mp3.

+0

Sí, pero no hay forma de hacerlo a través de MediaStore? Eso es lo que estoy buscando. – Jeff

6

Comprobar este código:

public class MusicLibraryScanner { 

    private static Cursor mediaCursor; 
    private static Cursor genresCursor; 

    private static String[] mediaProjection = { 
      MediaStore.Audio.Media._ID, 
      MediaStore.Audio.Media.ARTIST, 
      MediaStore.Audio.Media.ALBUM, 
      MediaStore.Audio.Media.TITLE 
    }; 
    private static String[] genresProjection = { 
      MediaStore.Audio.Genres.NAME, 
      MediaStore.Audio.Genres._ID 
    }; 

    public static void getMusicFromStorage(Context context) { 

     mediaCursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
       mediaProjection, null, null, null); 

     int artist_column_index = mediaCursor 
       .getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 
     int album_column_index = mediaCursor 
       .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 
     int title_column_index = mediaCursor 
       .getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
     int id_column_index = mediaCursor 
       .getColumnIndexOrThrow(MediaStore.Audio.Media._ID); 

     if (mediaCursor.moveToFirst()) { 
      do { 
       String info = "Song " + mediaCursor.getString(title_column_index) + " "; 
       info += "from album " + mediaCursor.getString(album_column_index) + " "; 
       info += "by " + mediaCursor.getString(artist_column_index) + ". "; 

       int musicId = Integer.parseInt(mediaCursor.getString(id_column_index)); 

       Uri uri = MediaStore.Audio.Genres.getContentUriForAudioId("external", musicId); 
       genresCursor = context.getContentResolver().query(uri, 
         genresProjection, null, null, null); 
       int genre_column_index = genresCursor.getColumnIndexOrThrow(MediaStore.Audio.Genres.NAME);     

       if (genresCursor.moveToFirst()) { 
        info += "Genres: "; 
        do { 
         info += genresCursor.getString(genre_column_index) + " "; 
        } while (genresCursor.moveToNext()); 
       } 

       Log.e("Audio scanner", "Song info: " + info); 
      } while (mediaCursor.moveToNext()); 
     } 
    } 
} 
+0

¿Cuál es la función getContentUriForAudioId? –

+0

Tengo uso pero se estrelló en Android 2.3.5 porque no hay Método en Android 2.3.6. Por favor, ayúdenme para el dispositivo de versión más baja. –

+0

esto le dará solo una lista de todos los géneros, pero no de qué género pertenece a qué canción – jazz

0

Si usted todavía está buscando una respuesta -----

MediaMetadataRetriever mr = new MediaMetadataRetriever(); 

Uri trackUri = ContentUris.withAppendedId(
    android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,song_id); 

mr.setDataSource(mContext, trackUri); 

String thisGenre = mr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE); 
Cuestiones relacionadas