Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从android mediastore、.audio.media内容提供商检索曲目图像?_Android_Audio_Mediastore - Fatal编程技术网

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

从android mediastore、.audio.media内容提供商检索曲目图像?,android,audio,mediastore,Android,Audio,Mediastore,是否可以从mediastore音频内容提供商检索每个曲目图像?我不确定他们是否为每个音轨都有单独的图像,或者是否每个专辑只有一张图像。如果可能,请提供解决方案或相应链接。Android不会将其保存为“曲目图像”,而是保存为“相册图像”。因此,您必须对唱片集数据执行另一个查询: albumId来自加载歌曲的光标: long albumId = cursor.getLong(7); Cursor artCursor = context.getContentResolver().query(

是否可以从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));
}

此解决方案适用于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。