Вопрос

У меня есть список альбомов, которые я использовал это:

private List<Album> getAlbums() {
Cursor cur = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
  List<Album> albums = new ArrayList<Album>();

  if (cur.moveToFirst()) {
   do {
    int albumIdIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
    int albumIndex = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM);
    int artistIndex = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST);
    int albumId = cur.getInt(albumIdIndex);
    String name = cur.getString(albumIndex);
    String artist = cur.getString(artistIndex);
    LogUtil.i(TAG, "albumid= " + albumId + ", album= " + name + ", artist=" + artist);

    Album album = new Album(albumId, name, artist);
    if (!albums.contains(album)) {
     albums.add(album);
    }    
   } while (cur.moveToNext());

  }

  return albums;
 }

Я использую этот список альбомов в подразделении, но я также хочу получить миниатюры альбомов.

Я знаю, что я могу использовать следующий код, чтобы получить фактическое произведение искусства, но мне нужны миниатюры, потому что я выхожу из памяти, если я использую полные изображения в списке:

Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);

Я видел этот пост:Android Media Thumbnails. Серьезные проблемы?Но у меня нет имиджа, только альбумид, поэтому я не думаю, что это помогает.

Это было полезно?

Решение

Получите каждый альбом Art, создайте новую версию его, используя Bitmap.createscaledbitmap (), используйте это, перерабатывать () Старый растровый карту, чтобы заставить память уйти, перейти к следующему изображению. Держите Hashmap или что-то, чтобы убедиться, что вы не загружаете тот же альбом, в два раза или больше (более одного трека будет иметь тот же арт-идентификатор альбома, кэшировать его.

Должен работать хорошо. (Работает на меня)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top