2013-11-20 3 views
6

Я хочу знать, как отображать обложки альбомов с помощью android.provider.MediaStore.Audio.Albums.ALBUM.Album_Art.Как показать обложку альбома?

Я извлекаю метаданные из пути, используя следующий код, который отлично подходит для песен, но я просто не знаю, как отображать обложки альбомов для альбомов или исполнителей в целом.

MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
byte[] rawArt = null; 
float ht_px = TypedValue.applyDimension(
     TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics()); 
float wt_px = TypedValue.applyDimension(
     TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics()); 
BitmapFactory.Options bfo=new BitmapFactory.Options(); 
try { 
    mmr.setDataSource(songdetails.get(swapnumber).Path); 
    StackBlurManager _stackBlurManager; 
    rawArt = mmr.getEmbeddedPicture(); 
    if (rawArt != null) { 
     bitmap2 = BitmapFactory.decodeByteArray(rawArt, 0, rawArt.length, bfo); 
     bitmap3 = Bitmap.createScaledBitmap(bitmap2, (int) ht_px, (int) wt_px, true); 
//... 

ответ

3

Сначала я рекомендовал бы взглянуть на:

Этот фрагмент кода может помочь вам начать работу в правильном направлении.

// Query URI 
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

// Columns 
String[] select = { 
    MediaStore.Audio.Media._ID, 
    MediaStore.Audio.Media.ARTIST, 
    MediaStore.Audio.Media.ALBUM, 
    MediaStore.Audio.Media.TITLE, 
    MediaStore.Audio.Media.DATA, 
    MediaStore.Audio.Media.ALBUM_ID, 
    MediaStore.Audio.Media.DURATION 
}; 

// Where 
String where = MediaStore.Audio.Media.IS_MUSIC + "=1"; 

// Perform the query 
Cursor cursor = context.getContentResolver().query(uri, cursor_cols, where, null, null); 

if (cursor.moveToFirst()) { 
    while (!cursor.isAfterLast()) { 
     long albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)); 
     String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); 
     String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)); 
     String track = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); 
     String data = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); 
     int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); 

     final Uri ART_CONTENT_URI = Uri.parse("content://media/external/audio/albumart"); 
     Uri albumArtUri = ContentUris.withAppendedId(ART_CONTENT_URI, albumId); 

     Bitmap bitmap = null; 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), albumArtUri); 
     } catch (Exception exception) { 
      // log error 
     } 

     cursor.moveToNext(); 
    } 
} 
+0

Привет, спасибо за ваш ответ, но я уже выяснил решение для него ... и мой был короче ... в любом случае я предполагаю, что ваш ответ прав и принимает его ... –

Смежные вопросы