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