4

アルバムではなく曲ごとにカバー写真を撮ることはできますか?なぜなら、私は1つの自己結合アルバムと曲を持っていて、それらはすべて異なるカバー写真を持っているからです。しかし、それらを照会したいときは、常に同じ画像が返されます。

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をサポートしていることは知っていますが、MediaStore.Audio.Media._IDが機能していないため、どのIDを使用する必要がありますか。

4

1 に答える 1

15

私はよく知らないのです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.
于 2013-06-06T21:00:56.630 に答える