如何在 Android 中获取专辑缩略图?

Posted

技术标签:

【中文标题】如何在 Android 中获取专辑缩略图?【英文标题】:How do I get Album Thumbnails in Android? 【发布时间】:2011-03-27 05:05:34 【问题描述】:

我有一张我用这个得到的专辑列表:

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 thumbnails. Serious issues? 但是我没有imageId,只有albuid,所以我认为它没有帮助。

【问题讨论】:

嘿,我也无法将 URI 更改为位图..你能告诉代码吗? 与其对 URI 使用自己的硬编码字符串,不如这样查询:***.com/a/17574629/997940 【参考方案1】:

获取每个专辑封面,使用 Bitmap.createScaledBitmap() 创建它的新版本,使用它,recycle() 旧位图以使内存消失,移动到下一张图像。保留一个 HashMap 或其他东西,以确保您不会两次或多次加载相同的专辑封面(多个曲目将具有相同的专辑封面 ID,请将其缓存。

应该很好用。 (为我工作)

【讨论】:

这是我采用的方法,但我认为专辑封面也有一个 URI:content://media/external/audio/albumart_thumb。我现在实际上坚持将位图写入 URI content://media/external/audio/albumart。当我使用此代码时,我收到 FileNotFoundExceptions: Uri artUri = 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); 哦 - 我从这里找到了写专辑的部分:netmite.com/android/mydroid/packages/apps/Music/src/com/android/… 嘿,我也无法将 URI 更改为位图..你能告诉代码吗?

以上是关于如何在 Android 中获取专辑缩略图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Win8 C# 应用程序中设置专辑封面?

如何为音乐文件创建专辑缩略图

使用 CAMERA 时从 UIImagePickerController 获取缩略图(不是专辑)

android4.4 中如何获取最近应用的缩略图

在 android 11 中接收专辑封面

Android:如何获取应用程序私有文件的视频缩略图?