如何在Xamarin获得媒体文件的相册艺术



我已经搜索了几天,了解如何从文件路径中获取歌曲的专辑艺术(或视频的帧捕获(。我所能找到的只是与Mediastore相关的东西,比如这个答案,它需要获得文件的相册ID。

Cursor cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, 
new String[] {MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART}, 
MediaStore.Audio.Albums._ID+ "=?", 
new String[] {String.valueOf(albumId)}, 
null);
if (cursor.moveToFirst()) {
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
// do whatever you need to do
}

但我找不到关于它如何工作的指南,如何将文件传递到Mediastore,或者如何获取媒体的相册ID等等。。。目前我使用MediaMetadataRetriever获取媒体信息,但我找不到使用它获取相册艺术或媒体文件的视频缩略图的方法…

**更新:-

如果在使用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"/>

调用如下:

File file = new File("/storage/sdcard/Movies/music1.mp4");
if (file.Exists())
{
loadingCover(file.AbsolutePath);
}

相关内容

  • 没有找到相关文章

最新更新