Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Xamarin.android 如何在Xamarin中获取媒体文件的唱片集艺术?_Xamarin.android_Mediastore_Albumart - Fatal编程技术网

Xamarin.android 如何在Xamarin中获取媒体文件的唱片集艺术?

Xamarin.android 如何在Xamarin中获取媒体文件的唱片集艺术?,xamarin.android,mediastore,albumart,Xamarin.android,Mediastore,Albumart,几天来,我一直在寻找如何从文件路径获取歌曲的专辑艺术或视频的帧捕获。我所能找到的只是与Mediastore相关的东西,比如需要获取文件的相册ID Cursor Cursor=getContentResolver.queryMediaStore.Audio.Albums.EXTERNAL\u CONTENT\u URI, 新字符串[]{MediaStore.Audio.Albums.\u ID,MediaStore.Audio.Albums.ALBUM\u ART}, MediaStore.Aud

几天来,我一直在寻找如何从文件路径获取歌曲的专辑艺术或视频的帧捕获。我所能找到的只是与Mediastore相关的东西,比如需要获取文件的相册ID

Cursor Cursor=getContentResolver.queryMediaStore.Audio.Albums.EXTERNAL\u CONTENT\u URI, 新字符串[]{MediaStore.Audio.Albums.\u ID,MediaStore.Audio.Albums.ALBUM\u ART}, MediaStore.Audio.Albums.\u ID+=?, 新字符串[]{String.valueOfalbumId}, 无效的 如果cursor.moveToFirst{ 字符串路径=cursor.getStringcursor.getColumnIndexMediaStore.Audio.Albums.ALBUM\u艺术; //做你需要做的事 } 但是我找不到一个guid来说明它是如何工作的,如何将文件传递到Mediastore,或者如何获取媒体的相册ID或其他信息。。。目前我使用MediaMetadataRetriever获取媒体信息,但我找不到一种方法来获取相册艺术或媒体文件的视频缩略图

**更新:-

如果在使用Mediastore获取数据之前必须首先使用Mediastore获取媒体文件,我可以实现它,而不是我目前正在做的事情,我迭代设备文件以获取受支持的文件,这是一个更好的选择,因为Mediastore也支持从外部存储获取数据

非常感谢您的帮助。

如果使用MediaMetadataRetriever,您可以尝试以下示例代码:

private void loadingCover(string mediaUri)
{
    MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
    mediaMetadataRetriever.SetDataSource(mediaUri);
    byte[] picture = mediaMetadataRetriever.GetEmbeddedPicture();
    Android.Graphics.Bitmap bitmap = BitmapFactory.DecodeByteArray(picture, 0, picture.Length);
    musicCover.SetImageBitmap(bitmap);
}
此外,不放弃添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

非常感谢,这实际上像charm@MohamedAshraf一样有效是的,它也适用于视频文件!还有其他方法可以尝试使用MediaMetadataRetriever,例如:MediaMetadataRetriever.GetFrameAtIndex0。
File file = new File("/storage/sdcard/Movies/music1.mp4");
if (file.Exists())
{
    loadingCover(file.AbsolutePath);
}