即时更新 MediaItemDisplayProperties

Update MediaItemDisplayProperties on the fly

我创建了一个使用 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();

如果我将此行纳入 Artist/Title 的刷新方法,我还必须再次设置 _mediaPlayer 的源,这将导致播放音乐暂停。

有没有人知道如何解决这个问题?或者给我任何建议,我可以进一步研究。

谢谢克里斯

如果你想更新 Artist/Title,你应该可以使用 System​Media​Transport​Controls​Display​Updater class,它提供了更新显示在 SystemMediaTransportControls 上的音乐信息的功能。

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

Use the SystemMediaTransportControlsDisplayUpdater class to update the media info that is displayed by the transport controls, such as the song title or the album art for the currently playing media item. Get an instance of this class with the SystemMediaTransportControls.DisplayUpdater property. If your scenario requires it, you can update the metadata displayed by the system media transport controls manually by setting the values of the MusicProperties, ImageProperties, or VideoProperties objects exposed by the DisplayUpdater class.

例如:

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();