Итак, я новичок в Android и на самом сайте. Я пытаюсь получить обложку альбома для своего музыкального проигрывателя.
public void getSonglist(){
Songs song;
ContentResolver songResolver = getContentResolver();
Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri artUri;
Cursor songCursor = songResolver.query(songUri, null, null, null, null);
final Uri ART_CONTENT_URI = Uri.parse("content://media/external/audio/albumart");
if(songCursor.moveToFirst()){
do{ song = new Songs("","",0);
albumID = songCursor.getLong(songCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
song.setTitle(songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
song.setArtist(songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
song.set_Id(songCursor.getLong(songCursor.getColumnIndex(MediaStore.Audio.Media._ID)));
artUri = ContentUris.withAppendedId(ART_CONTENT_URI, albumID);
AlbumArt = null;
try {
AlbumArt = (MediaStore.Images.Media.getBitmap(getContentResolver(), artUri));
} catch (Exception exception) {
// log error
}
song.setAlbumArt(AlbumArt);
songlist.add(song);
}while(songCursor.moveToNext());
}
}
Проблема здесь в том, что хотя в коде нет ошибок, у меня есть большое количество песен на моем устройстве (около 900), и приложению не хватает памяти при попытке загрузить обложку альбома. (E / art: Throwing OutOfMemoryError «Не удалось выделить 1000012 байтов с 331252 свободными байтами и 323 КБ до OOM»)
Может ли кто-нибудь сказать мне другой, лучший способ получить обложку альбома? (Пожалуйста, подтвердите свой ответ кодом, если это возможно).