Получить обложку песни

Можно ли получить обложку по песне, а не по альбому. Потому что у меня есть один самообъединенный альбом с песнями, и все они имеют разные обложки. Но когда я хочу их запросить, я всегда получаю одно и то же изображение.

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, но какой идентификатор мне следует использовать, поскольку MediaStore.Audio.Media._ID не работает.


person Martin Metselaar    schedule 09.03.2013    source источник


Ответы (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.
person phxhawke    schedule 06.06.2013
comment
@MartinMetselaar, где вы берете картинку с песней..?? как получить изображение uri песни ..? - person Ramachandran A; 04.08.2017
comment
Я предполагаю, что, возможно, URI был построен так, как указано в этих вопросах: stackoverflow.com/q/3438809/997940 - person Yoav Feuerstein; 06.12.2018