从android mediastore,.audio.media内容提供商中检索曲目图像?

时间:2014-04-13 13:06:25

标签: android audio mediastore

可以从mediastore音频内容提供商处检索每个轨道图像吗?我不确定他们是否为每个音轨有单独的图像,或者他们每个专辑只有一个图像。如果可能,请提供解决方案或相应的链接。

2 个答案:

答案 0 :(得分:3)

Android不会将其保存为“曲目图片”,而是“专辑图片”。所以你必须对专辑数据做另一个查询:

albumId来自加载歌曲的光标:

long albumId = cursor.getLong(7);
Cursor artCursor = context.getContentResolver().query(
        MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
        new String[] {MediaStore.Audio.AlbumColumns.ALBUM_ART},
        MediaStore.Audio.Media._ID+" =?",
        new String[]{String.valueOf(albumId)},
        null);
String albumArt;
if(artCursor.moveToNext()) {
    albumArt = "file://"+artCursor.getString(0);
} else {
    albumArt = null;
}
artCursor.close();

if(albumArt != null) {
    BitmapFactory.decodeFile(new File(albumArt));
}

答案 1 :(得分:0)

此解决方案可以在Android 10上使用kotlin和glide:

    val uri = ContentUris.withAppendedId(
        Uri.parse("content://media/external/audio/albumart"),
        getItem(position)?.album_id?.toLong() ?: -1
    )

    Glide.with(holder.song_thumb.context)
        .load(uri)
        .into(holder.song_thumb)

getItem(position)?. album_id是使用内容提供者上的光标检索到的曲目上的专辑ID。

在Android 10上,此Uri是可访问的,而在内容提供者上通过查询检索的路径则不可用(无论是否具有READ_EXTERNAL_STORAGE权限)。