使用滑行查询mp3封面图像

时间:2016-12-28 12:41:58

标签: android media-player android-mediaplayer

我一直在开发一个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库加载图像!如果有这方面的教程,请善意告诉我。

1 个答案:

答案 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();
        }