按歌曲获取封面图片

时间:2013-03-09 18:58:22

标签: android media-player mediastore

是否可以按歌曲而不是按专辑获得封面图片。 因为我有一张带歌曲的自组合专辑,而且他们都有不同的封面图片。 但是当我想查询它们时,我总是得到相同的图片。

String[] ARG_STRING = {MediaStore.Audio.Media.ALBUM_ID};
...
String albumCover = _cursor.getString(_cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
...
MusicUtils.getArtwork(this, -1, Integer.parseInt(albumID));

所以我想知道如何获得一首歌的封面图片。

我知道MusicUtils支持SongId的getArtwork,但我应该使用什么ID,因为MediaStore.Audio.Media._ID无效。

1 个答案:

答案 0 :(得分:11)

我不熟悉MusicUtils,但是,您应该可以使用MediaMetadataRetriever从文件本身获取封面图片。这是一个简短的代码片段,展示了如何使用它。引用的uri是您要为其检索艺术的文件的内容uri。

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
byte[] rawArt;
Bitmap art;
BitmapFactory.Options bfo=new BitmapFactory.Options();

mmr.setDataSource(getApplicationContext(), uri);
rawArt = mmr.getEmbeddedPicture();

// if rawArt is null then no cover art is embedded in the file or is not 
// recognized as such.
if (null != rawArt) 
    art = BitmapFactory.decodeByteArray(rawArt, 0, rawArt.length, bfo);

// Code that uses the cover art retrieved below.