如何在Android中获得专辑缩略图?
-
27-09-2019 - |
题
我有一张专辑列表,我使用了此信息:
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媒体缩略图。严重的问题?但是我没有imageId,只有专用型,所以我认为这无济于事。
解决方案
获取每张专辑艺术,使用bitmap.createscaledbitmap()创建一个新版本,使用它,recycle()旧的位图使内存消失,转到下一个图像。保留一个hashmap或一些东西以确保您不会两次或更多地加载相同的专辑艺术(一个以上的曲目将具有相同的专辑art ID,CACHE IT。
应该效果很好。 (为我工作)
不隶属于 StackOverflow