7

大家好,在我的媒体播放器中,我需要显示这首歌的专辑封面(我不知道它实际上是如何发音的......我希望是对的)。我知道我必须从歌曲本身中提取图像,但是如何?我想知道。所以任何帮助,如果可能的话,使用某种代码。谢谢。

4

4 回答 4

19

对于 api 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
        }
        else
        {
            coverart.setImageResource(R.drawable.fallback_cover); //any default cover resourse folder
        }

            coverart.setAdjustViewBounds(true);
            coverart.setLayoutParams(new LinearLayout.LayoutParams(500, 500));
于 2014-02-04T10:10:14.690 回答
3

尝试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();
于 2013-11-26T03:41:43.743 回答
1

您可以使用 Album_id 尝试使用 Picasso。它是开源的,内存缓存更少。

依赖:

implementation 'com.squareup.picasso:picasso:2.71828'

代码:

String albumId = songObject.getAlbum_id();

final Uri albumUri = Uri.parse("content://media/external/audio/albumart");

Uri uri = ContentUris.withAppendedId(albumUri, Long.parseLong(albumId));

    Picasso.get().load(uri)
            .fit()
            .centerCrop()
            .error(R.drawable.img_album)
            .into(holder.imgAlbumSongObject);

这已经很晚了。但是,可能会帮助某人。

于 2019-10-19T13:08:11.977 回答
-1
 MediaMetadataRetriever mmr = new MediaMetadataRetriever();
 mmr.setDataSource(filePath);

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

请注意,这仅适用于 api 级别 10 或更高版本

于 2013-11-24T11:29:54.440 回答