如何在安卓系统中获取相册缩略图?

3

我有一个专辑列表,是通过以下方式获取的:

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中使用这个专辑列表,但我也想获取专辑的缩略图。
我知道我可以使用下面的代码获取实际的艺术品,但因为在List Activity中使用完整的图片会导致内存不足,所以我需要缩略图:
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);

我看到了这篇文章:Android媒体缩略图。严重问题?但是我没有imageId,只有albumid,所以我觉得它并没有什么帮助。


嘿,我也遇到了将URI更改为位图的问题...你能告诉我代码吗? - Ankit Srivastava
不要使用自己硬编码的字符串来表示URI,最好是用这种方式查询:https://dev59.com/vGMm5IYBdhLWcg3wfvDd#17574629 - Yoav Feuerstein
1个回答

4

获取每个专辑封面,使用Bitmap.createScaledBitmap()创建一个新版本,使用新版本,回收旧的位图以释放内存,然后移动到下一张图片。保持HashMap或类似的东西以确保不会加载相同的专辑封面两次或更多(多个曲目将具有相同的专辑封面ID,对其进行缓存。

应该可以很好地工作。(对我有效)


这是我采用的方法,但我认为还有一个专门用于专辑封面的URI:content://media/external/audio/albumart_thumb。目前我卡在了将位图写入URI content://media/external/audio/albumart 的过程中。当我使用以下代码时,会出现FileNotFoundExceptions:Uri artworkUri = Uri.parse("content://media/external/audio/albumart");Uri uri = ContentUris.withAppendedId(artworkUri, album.getId()); OutputStream outStream = getContentResolver().openOutputStream(uri); bmp.compress(Bitmap.CompressFormat.JPEG, 50, outStream); - timothyjc
2
哦 - 我从这里找到了写专辑封面的部分:http://www.netmite.com/android/mydroid/packages/apps/Music/src/com/android/music/MusicUtils.java - timothyjc
嘿,我也遇到了将URI更改为位图的问题...你能告诉我代码吗? - Ankit Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接