2012-11-15 38 views
3

我正在开发Android上的音乐播放器,并且我收到一个错误,我不知道为什么。我认为我做对了,但不起作用。Android:如何使用MediaMetadataRetriever获取图像?

我搜索了很多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)); 

感谢。

回答

4

下面应该工作:

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); 
} 
+0

感谢的人它的作品! –

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(); 
+0

嗨。我用你的图书馆。但看起来非常巨大!当添加这个库我的apk文件从2mb成为26mb!有没有解决这个问题的机会? – erfan

相关问题