MediaMetadataRetriever:当试图使用url从mp3中检索相册艺术时,应用程序崩溃



我想在这里完成的是,当我调用这个方法时:

public void setAlbumArt(int index) {
android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(this, Uri.parse(fullsongpath.get(index).Path));
byte [] data = mmr.getEmbeddedPicture();
//albumArt is an Imageview object
// convert the byte array to a bitmap
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
albumArt.setImageBitmap(bitmap); //associated cover art in bitmap
albumArt.setAdjustViewBounds(true);
albumArt.setLayoutParams(new LinearLayout.LayoutParams(500, 500));
} else {
albumArt.setImageResource(R.mipmap.default_album_art); //any default cover resourse folder
albumArt.setAdjustViewBounds(true);
albumArt.setLayoutParams(new LinearLayout.LayoutParams(500,500 ));
}
}

我的应用程序崩溃,引发错误

java.lang.IollegalArgumentException

这是相册艺术图片查看

<ImageView
android:id="@+id/albumArt"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:src="@mipmap/default_album_art" />

fullsongpath是包含以下对象的ArrayList:

public class SongInfo {
public  String Path;
public  String song_name;
public  String album_name;
public  String artist_name;
public  SongInfo(String Path,String song_name,String album_name,String artist_name){
this.Path=Path;
this.song_name=song_name;
this.album_name=album_name;
this.artist_name=artist_name;
}
}

路径是mp3文件的URL

我真的不知道是什么原因导致了这个问题,我希望你能帮忙,那将不胜感激。

这样尝试,

new Thread(new Runnable() {
public void run() {
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(model.getPostImage(), new HashMap<String, String>());
// get mp3 info
byte[] art = metaRetriever.getEmbeddedPicture();
final Bitmap bm2 = BitmapFactory.decodeByteArray(art, 0, art.length);
metaRetriever.release();
holder.postImg.post(new Runnable() {
public void run() {
holder.postImg.setImageBitmap(bm2);
}
});
}
}).start();

不知道您是如何填充PATH的,但我怀疑您使用了MediaStore.Audio.Media.EXTERNAL_CONTENT_URI

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI没有相册艺术

在这种情况下,您需要使用MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI

相关内容

  • 没有找到相关文章

最新更新