从android mediastore、.audio.media内容提供商检索曲目图像?
是否可以从mediastore音频内容提供商检索每个曲目图像?我不确定他们是否为每个音轨都有单独的图像,或者是否每个专辑只有一张图像。如果可能,请提供解决方案或相应链接。Android不会将其保存为“曲目图像”,而是保存为“相册图像”。因此,您必须对唱片集数据执行另一个查询: albumId来自加载歌曲的光标:从android mediastore、.audio.media内容提供商检索曲目图像?,android,audio,mediastore,Android,Audio,Mediastore,是否可以从mediastore音频内容提供商检索每个曲目图像?我不确定他们是否为每个音轨都有单独的图像,或者是否每个专辑只有一张图像。如果可能,请提供解决方案或相应链接。Android不会将其保存为“曲目图像”,而是保存为“相册图像”。因此,您必须对唱片集数据执行另一个查询: albumId来自加载歌曲的光标: long albumId = cursor.getLong(7); Cursor artCursor = context.getContentResolver().query(
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));
}
此解决方案适用于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是可访问的,而在内容提供商上通过查询检索到的路径是不可访问的(无论读取\u外部\u存储权限)。什么是“albumArt”字符串或位图类型。我假设这是相册图像的路径。但是如何从该路径获取图像?是的,这是路径。要获得它背后的位图,可以使用
BitmapFactory.decodeFile(新文件(albumArt))代码>。由于安全性提高,此解决方案不适用于Android 10。