【发布时间】:2014-04-13 13:06:24
【问题描述】:
是否可以从 mediastore 音频内容提供商检索每个曲目图像?我不确定他们是否为每个音轨提供单独的图像,或者是否每个专辑只有一个图像。如果可能,请提供解决方案或相应链接。
【问题讨论】:
标签: android audio mediastore
是否可以从 mediastore 音频内容提供商检索每个曲目图像?我不确定他们是否为每个音轨提供单独的图像,或者是否每个专辑只有一个图像。如果可能,请提供解决方案或相应链接。
【问题讨论】:
标签: android audio mediastore
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));
}
【讨论】:
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 是使用 content provider 上的光标检索到的曲目上的专辑 ID。
在 Android 10 上,此 Uri 可访问,而通过内容提供程序上的查询检索到的路径不可访问(与 READ_EXTERNAL_STORAGE 权限无关)。
【讨论】: