安卓:如何使用MediaMetadataRetriever获取图像?

3
我正在开发一款Android音乐播放器,但出现了一个我不知道原因的错误。我认为我做得没问题,但它却不起作用。
我搜索了很多MediaMetadataRetriever的资料,但仍然不知道我的问题是什么。
我使用MediaMetadataRetriever获取关于我的歌曲的信息。一切都运行良好,但是getEmbeddedPicture()方法出问题了。每当调用getEmbeddedPicture时,我都会收到以下消息: 11-15 13:36:11.101: E/MediaMetadataRetrieverJNI(460): getEmbeddedPicture: 调用getEmbeddedPicture失败。
我知道这个方法只有在setDataSource被调用之后才会被调用,并且我已经调用了该方法,但我仍然遇到这个错误(当然,我的歌曲中有图片,并且我正在使用android 2.3.3)。
以下是代码:
mediaInfo.setDataSource(filePath);//filePath is correct.
byte[] img = mediaInfo.getEmbeddedPicture();//cause error
if (img != null)
    imgAlbum.setImageBitmap(BitmapFactory.decodeByteArray(img, 0,img.length));

感谢您的选择。
2个回答

5
以下内容应该有效:
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
byte[] art = retriever.getEmbeddedPicture();

if( art != null ){
    imgAlbum.setImageBitmap( BitmapFactory.decodeByteArray(art, 0, art.length));
}
else{
    imgAlbum.setImageResource(R.drawable.no_image);
}

1
尝试使用 FFmpegMediaMetadataRetriever
FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource(filePath);
byte[] image = retriever.getEmbeddedPicture();
if (image != null) {
    imgAlbum.setImageBitmap(BitmapFactory.decodeByteArray(image, 0,image.length));
}
retriever.release();

嗨。我使用了你的库。但是它看起来太大了!当我添加这个库后,我的apk文件从2MB变成了26MB!有没有办法解决这个问题? - Erfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接