找歌曲的封面图片(Get cover picture by song)

2019-07-21 06:30发布

是否有可能通过歌曲,而不是按专辑获得封面图片。 因为我有一名歌曲自合并的专辑,他们都有不同的封面图片。 但是,当我想查询他们,我总是得到相同的图片返回。

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支持getArtwork通过SongId,但我应该用什么ID,因为MediaStore.Audio.Media._ID不能正常工作。

Answer 1:

我不熟悉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.


文章来源: Get cover picture by song