我一直在此页面中搜索如何从 mp3 文件中获取隐蔽艺术。
我正在开发一个音乐应用程序,我想获取 mp3 文件(ID3v2 标签)中歌曲的封面艺术。但是,我搜索了很多,但我还没有找到我该怎么做。
有人知道怎么做吗?
感谢大家。
我一直在此页面中搜索如何从 mp3 文件中获取隐蔽艺术。
我正在开发一个音乐应用程序,我想获取 mp3 文件(ID3v2 标签)中歌曲的封面艺术。但是,我搜索了很多,但我还没有找到我该怎么做。
有人知道怎么做吗?
感谢大家。
这是我如何获得封面艺术的实现。首先我选择一个音频文件:
MediaMetadataRetriever myRetriever = new MediaMetadataRetriever();
Uri selectedAudio;
//...
//on button click or any other event
Intent intent = new Intent();
String chooser = "Select audio file";
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, chooser), GET_AUDIO_CODE);
然后在 onActivityResult 我得到文件的 URI:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK)
{
selectedAudio = data.getData();
MediaMetadataRetriever myRetriever = new MediaMetadataRetriever();
myRetriever.setDataSource(this, selectedAudio); // the URI of audio file
setArtwork(myRetriever);
}
//...
}
之后我设置了封面艺术:
//....
public boolean setArtwork(MediaMetadataRetriever myRetriever)
{
byte[] artwork;
artwork = myRetriever.getEmbeddedPicture();
if (artwork != null)
{
Bitmap bMap = BitmapFactory.decodeByteArray(artwork, 0, artwork.length);
ivArtwork.setImageBitmap(bMap);
return true;
}
else
{
ivArtwork.setImageBitmap(null);
return false;
}
}