Как получить миниатюры альбомов в Android? - PullRequest
3 голосов
/ 09 августа 2010

У меня есть список альбомов, которые я получил с помощью этого:

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;
 }

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

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

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

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

1 Ответ

4 голосов
/ 09 августа 2010

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

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

...