我要在这里完成的是,当我调用此方法时:
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.IllegalArgumentException
这是AlbumArt ImageView
<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文件的网址
我真的不知道是什么引起了这个问题,希望您能提供帮助,
答案 0 :(得分:0)
尝试这样,
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();
答案 1 :(得分:-1)
不知道您是如何填充PATH的,但是我怀疑您使用了MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
没有专辑封面
在这种情况下,您需要使用MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI