我一直在开发一个Android音乐播放器,我想加载每个mp3标签所具有的封面图片。我之前使用以下代码来提取图像,但是当列表视图开始滚动时,它会产生很多错误,应用程序会随机崩溃。代码如下。
MediaMetadataRetriever retrieve = new MediaMetadataRetriever();
retrieve.setDataSource(songsList.get(songIndex).get("songPath"));
byte [] data = mmr.getEmbeddedPicture();
这会引发错误,说明以下消息,并且随机应用程序崩溃。
getEmbeddedPicture:调用getEmbeddedPicture失败
所以我使用滑动库使用以下代码加载图像。
Glide.with(parent.getContext()).load(currSong.getPath())
.placeholder(R.drawable.default_img).into(holder.albumImage);
问题是我将歌曲路径传递给加载功能但是没有加载任何图像!我记录了路径,它显示了mp3文件的正确路径。
如何使用Glide库加载图像!如果有这方面的教程,请善意告诉我。
答案 0 :(得分:0)
我执行了以下操作来检索和设置列表中的图像。
要检索歌曲的专辑封面: - 这是查询
final Cursor mCursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ALBUM_ID}, null, null,
"LOWER(" + MediaStore.Audio.Media.TITLE + ") ASC");
捕获URI
long album_id=mCursor.getLong(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, album_id);
然后通过适配器
设置列表Uri uri=Uri.parse(data.get(position).getAlbum_art());
try {
bitmap = MediaStore.Images.Media.getBitmap(ctx.getContentResolver(), uri);
holder.image.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}