获得歌曲图像非常慢(MediaMetadataRetriever)

时间:2018-01-07 09:39:48

标签: android android-layout android-fragments media-player

我正在处理媒体播放器应用程序我正在使用 MediaMetadataRetriever 获取歌曲图像,我正在获取图像,并且我使用 Glide 进行设置,但图像大约需要7-9秒加载非常慢。我也尝试使用BitmapFactory但同时也是如此。

所以我可以通过任何更快的方式获得歌曲图像。

提前致谢

这是我使用MediaMetadataRetriever获取图像的代码。

{{1}}

1 个答案:

答案 0 :(得分:0)

此方法返回ArrayList<CommonModel>

public static ArrayList<CommonModel> getAllMusicPathList(Context context,String selectAll) {
        ArrayList<CommonModel> musicPathArrList = new ArrayList<>();
        Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

        Cursor cursorAudio = context.getContentResolver().query(songUri, null, null, null, null);
        if (cursorAudio != null && cursorAudio.moveToFirst()) {

            Cursor cursorAlbum;
            if (cursorAudio != null && cursorAudio.moveToFirst()) {

                do {
                    Long albumId = Long.valueOf(cursorAudio.getString(cursorAudio.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)));
                    cursorAlbum = context.getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                            new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART},
                            MediaStore.Audio.Albums._ID + "=" + albumId, null, null);

                        if(cursorAlbum != null && cursorAlbum.moveToFirst()){
                            String albumCoverPath = cursorAlbum.getString(cursorAlbum.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
                            String data = cursorAudio.getString(cursorAudio.getColumnIndex(MediaStore.Audio.Media.DATA));

                            if("selectAll".equals(selectAll))
                            {
                                musicPathArrList.add(new CommonModel(data,albumCoverPath, true));
                            }
                            else
                            {
                                musicPathArrList.add(new CommonModel(data,albumCoverPath, false));
                            }
                        }

                } while (cursorAudio.moveToNext());
            }
        }
        return musicPathArrList;
    }

我希望这会对你有所帮助。