从mp3文件中获取嵌入式封面图片

时间:2013-08-21 11:18:04

标签: android

我一直在这个页面中搜索如何从mp3文件中获取秘密艺术。

我正在开发一个音乐应用程序,我想获得mp3文件(ID3v2标签)内的歌曲封面。但是,我搜索了很多,但我还没找到,我怎么能这样做。

有人知道怎么做吗?

谢谢大家。

1 个答案:

答案 0 :(得分:6)

这是我如何获得封面艺术的实现。首先,我选择一个音频文件:

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;
    }
}