2012-04-18 4 views
2

Hello Everyone, В моем медиаплеере мне нужно отобразить обложку альбома (я не знаю, как это произносится на самом деле. Я надеюсь, что это правильно). Я знал, что мне нужно извлечь изображение из самой песни, но как? интересно. Так что любая помощь, если возможно, с каким-то кодом. Благодарю.Извлечь обложку альбома из mp3-файла в android

+0

дубликата HTTP: // StackOverflow .com/questions/1954434/cover-art-on-android – Rajesh

ответ

0
MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
mmr.setDataSource(filePath); 

String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM)); 

Примечание это будет работать только на уровне апи 10 или выше

+2

, вы должны прокомментировать код лучше, по крайней мере, введите 'Попробуйте следующее:' , лучше разместить ссылку на ссылку MediaMetaDataRetriever ... – nio

+0

это не отвечает на вопрос о том, как извлечь обложку альбома (изображение) –

2

Попробуйте FFmpegMediaMetadataRetriever:

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever(); 
retriever.setDataSource(uri); 
byte [] data = retriever.getEmbeddedPicture(); 

// convert the byte array to a bitmap 
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
// do something with the image ... 
// mImageView.setImageBitmap(bitmap); 

retriever.release(); 
9

для апи 10 и выше

android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
     mmr.setDataSource(songsList.get(songIndex).get("songPath")); 

     byte [] data = mmr.getEmbeddedPicture(); 
       //coverart is an Imageview object 

     // convert the byte array to a bitmap 
     if(data != null) 
     { 
      Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
      coverart.setImageBitmap(bitmap); //associated cover art in bitmap 
      coverart.setAdjustViewBounds(true); 
      coverart.setLayoutParams(new LinearLayout.LayoutParams(500, 500)); 
     } 
     else 
     { 
      coverart.setImageResource(R.drawable.fallback_cover); //any default cover resourse folder 
      coverart.setAdjustViewBounds(true); 
      coverart.setLayoutParams(new LinearLayout.LayoutParams(500,500)); 
     } 
Смежные вопросы