动态更新MediaItemDisplayProperties

时间:2017-06-14 09:51:38

标签: stream uwp media-player

我创建了一个使用HTML5 Webradio流的UWP应用程序。 一切正常但现在我想将媒体和艺术家信息添加到MediaPlayer元素。 如果用户在开始屏幕上锁定了他的设备,则会显示此信息。 如果用户选择流,则第一个轨道正确显示。但是,如果不重新启动Stream,我就无法更新此信息。

MediaItemDisplayProperties mdp = _mediaPlaybackItem.GetDisplayProperties();
mdp.Type = Windows.Media.MediaPlaybackType.Music;
mdp.MusicProperties.Artist = "TBA Artist";
mdp.MusicProperties.Title = "TBA Title";
mdp.Thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(MainPage.Current.CurrentStream.PreviewImageUri);
_mediaPlaybackItem.ApplyDisplayProperties(mdp);
_mediaPlayer.Source = mpItem; 
_mediaPlayer.Play();

如果我将此行放入我的刷新艺术家/标题方法中,我还必须再次设置_mediaPlayer的来源,这将导致暂停播放音乐。

有没有人知道如何解决这个问题?或者提出任何我可以进一步了解的建议。

谢谢Chris

1 个答案:

答案 0 :(得分:1)

如果您想更新艺术家/标题,您应该能够使用System​Media​Transport​Controls​Display​Updater课程,它提供了更新SystemMediaTransportControls上显示的音乐信息的功能。

我们可以将Artist / Title设置为SystemMediaTransportControlsDisplayUpdater.MusicProperties属性。然后我们可以使用SystemMediaTransportControlsDisplayUpdater.Update方法更新当前播放媒体的元数据。

  

使用SystemMediaTransportControlsDisplayUpdater类更新传输控件显示的媒体信息,例如当前播放的媒体项目的歌曲标题或专辑封面。使用SystemMediaTransportControls.DisplayUpdater属性获取此类的实例。如果您的方案需要它,您可以通过设置DisplayUpdater类公开的MusicProperties,ImageProperties或VideoProperties对象的值来手动更新系统媒体传输控件显示的元数据。

例如:

SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;    
updater.MusicProperties.Artist = "artist";
updater.MusicProperties.AlbumArtist = "album artist";
updater.MusicProperties.Title = "song title";    
updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Music/music1_AlbumArt.jpg"));    
updater.Update();