首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Xamarin forms IOS中使用CrossMediaManager播放Mp3文件时更改DisplayImage

在Xamarin forms IOS中使用CrossMediaManager播放Mp3文件时更改DisplayImage
EN

Stack Overflow用户
提问于 2020-09-16 06:14:39
回答 1查看 119关注 0票数 0

我试图在使用CrossMediaManager播放mp3文件时更改显示图像,但似乎没有更改图像。它确实改变了标题、id等等,但我不知道为什么它不能改变显示图像。

代码语言:javascript
运行
复制
async Task ExecutePlayChapterCommand()
        {
            if (IsBusy) return; 
            IsBusy = true;
            try
            {
                await Task.Delay(TimeSpan.FromMilliseconds(10));
                var reciter = Reciters.FirstOrDefault();
                Device.BeginInvokeOnMainThread(async() => {
                    var mediaItem = await CrossMediaManager.Current.Play(reciter.DownloadURL);
                    CrossMediaManager.Current.Queue.Current.IsMetadataExtracted = false;
                    mediaItem.Title = reciter.Name;
                    var image = new Image() { Source = ImageSource.FromUri(new Uri(reciter.ImagePath)) };
                    CrossMediaManager.Current.Queue.Current.Title = string.Format("{0} - {1} ({2})", "1", "ChName", "English");
                    CrossMediaManager.Current.Queue.Current.Album = reciter.Name;
                    CrossMediaManager.Current.Queue.Current.Artist = reciter.Name;
                    CrossMediaManager.Current.Queue.Current.AlbumImage = image;
                    CrossMediaManager.Current.Queue.Current.AlbumImageUri = reciter.ImagePath;
                    CrossMediaManager.Current.Queue.Current.DisplayImage = image;
                    CrossMediaManager.Current.Queue.Current.DisplayImageUri = reciter.ImagePath;
                    CrossMediaManager.Current.Queue.Current.Image = image;
                    CrossMediaManager.Current.Queue.Current.ImageUri = reciter.ImagePath;
                    CrossMediaManager.Current.Notification.UpdateNotification();
                });
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            finally { IsBusy = false; }
        }
    }

here中上传了一个示例项目

EN

回答 1

Stack Overflow用户

发布于 2021-10-12 10:51:59

这个答案可能有点晚了,但它对我来说非常有效。

  • 首先,媒体项目的" image,DisplayImage“属性是对象,包含特定于平台的项目中封面图像(UIImage和位图)的本机表示形式,因此不要为它们赋值。

  • 以这样的方式创建媒体项,而不指定上面提到的属性。

新建艺术家(chapter.MediaUrl){ ImageUri = item.ImageUrl,DisplayImageUri = item.ImageUrl,AlbumImageUri = item.ImageUrl,DisplayTitle = item.Title,Title = item.Title,chapter.MediaUrl= item.Author,Author = item.Author,};

  • 然后在iOS上,在特定于平台的项目中设置媒体项的队列项之后,创建一个获取媒体项的方法。将从共享项目中调用此方法。

这里的方法是

public void SetMediaImages(IMediaManager mediaManager) { if (mediaManager.Queue != null && mediaManager.Queue.Any()) { foreach (var mediaItem in mediaManager.Queue) { if (!string.IsNullOrEmpty(mediaItem.ImageUri)) { mediaItem.Image = UIImage.LoadFromData(NSData.FromUrl(new NSUrl(mediaItem.ImageUri);mediaItem.AlbumImage = mediaItem.Image;}

  • 使用Xamarin.Form的依赖项服务在共享项目中调用此方法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63910541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档