Проблема с RecyclerView и Bitmap

У меня есть адаптер, который загружает картинки из музыкальных файлов. Сначала подгружала изображения таким способом

Uri uri = Uri.parse(song.getPath());
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        retriever.setDataSource(uri.toString());
        byte[] art = retriever.getEmbeddedPicture();
        if(art != null){
            Bitmap bitmap = BitmapFactory.decodeByteArray(art, 0, art.length);
            Glide.with(this).load(bitmap).into(playlistPhoto);
        }
        else {
            Glide.with(this).asBitmap().load(R.drawable.icon).into(playlistPhoto);

Пробовала добавлять diskcachestrategy все равно не помогает. Сильно подвисает. Тогда решила использовать image loader:

ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(getActivity()));
            ImageLoader.getInstance()
                    .displayImage(ContentUris.withAppendedId(Uri.parse("content://media/external/audio/albumart"),
                    song.getAlbumId()).toString(), playlistPhoto,
                    new DisplayImageOptions.Builder()
                            .cacheInMemory(true)
                            .showImageOnLoading(R.drawable.icon).
                            resetViewBeforeLoading(true).build());

Работает все идеально - быстро подгружается и recyclerview плавно скользит. Проблема оказалась в другом. В первом способе я вытаскиваю саму картинку песни, во втором способе я вытаскиваю картинку альбома. Вопрос - как в image loader подгружать картинки песни, а не альбома??? Облазила все, но единственный вариант извлечение изображения это только через MediaMetadataRetriever.

Вот извлечение музыкальных композиций:

public void newMusicFiles(String order) {
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        String[] projection = {
                MediaStore.Audio.Media.ALBUM,
                MediaStore.Audio.Media.TITLE,
                MediaStore.Audio.Media.DURATION,
                MediaStore.Audio.Media.DATA,
                MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.ALBUM_ID,
                MediaStore.Audio.Media.ARTIST_ID,
                MediaStore.Audio.Media.IS_MUSIC
        };
        Cursor cursor = mContext.getContentResolver().query(uri, projection,
                null, null, order);
        if(cursor != null){
            while(cursor.moveToNext()){
                String album = cursor.getString(0);
                String title = cursor.getString(1);
                String duration = cursor.getString(2);
                String path = cursor.getString(3);
                String artist = cursor.getString(4);
                String id = cursor.getString(5);
                Long albumId = cursor.getLong(6);
                Long artistId = cursor.getLong(7);
                Long is_music = cursor.getLong(8);
                if(is_music == 0) continue;

                MusicFile musicFile = new MusicFile(path, title, artist, album, duration, id, albumId, artistId);
...
    }

Вот сам файл:

public class MusicFile {
    private String path;
    private String title;
    private String artist;
    private String album;
    private String duration;
    private String id;
    private long albumId;
    private long artistId;

    public MusicFile(String path, String title, String artist, String album, String duration,
                     String id, long albumId, long artistId) {
        this.path = path;
        this.title = title;
        this.artist = artist;
        this.album = album;
        this.duration = duration;
        this.id = id;
        this.albumId = albumId;
        this.artistId = artistId;
    }
    ....

}

Ответы (0 шт):