Frage

Ich habe eine Liste von Alben, die ich verwendet habe:

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

Ich verwende diese Liste von Alben in einer Listaktivität, aber ich möchte auch die Miniaturansichten der Alben erhalten.

Ich weiß, ich kann den folgenden Code verwenden, um das eigentliche Kunstwerk zu erhalten, aber ich brauche die Miniaturansichten, weil ich aus dem Speicher herauskomme, wenn ich die vollständigen Bilder in einer Listenaktivität verwende:

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

Ich habe diesen Beitrag gesehen:Android Media Thumbnails. Ernste Probleme?Aber ich habe nicht die ImageId, nur das AlbumId, also glaube ich nicht, dass es hilft.

War es hilfreich?

Lösung

Holen Sie sich jede Albumkunst, erstellen Sie eine neue Version davon mit Bitmap.CreateScaledBitMap (), verwenden Sie das, recycle () die alte Bitmap, um die Erinnerung verschwinden zu lassen, gehen Sie zum nächsten Bild. Halten Sie eine Hashmap oder etwas, um sicherzustellen, dass Sie nicht zweimal oder mehr das gleiche Album -Kunst laden (mehr als ein Track wird das gleiche Album -Kunst -ID haben, Cache It.

Sollte gut funktionieren. (Funktioniert bei mir)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top