我遇到了替换 MediaControl 的新 SystemMediaTransportControls 的问题。
目前,我的应用程序设置为:-
systemControls = SystemMediaTransportControls.GetForCurrentView();
systemControls.IsPlayEnabled = true;
systemControls.IsStopEnabled = true;
systemControls.IsPauseEnabled = true;
systemControls.ButtonPressed += SystemControls_ButtonPressed;
和
async void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
System.Diagnostics.Debug.WriteLine(args.Button);
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
switch (args.Button)
{
case SystemMediaTransportControlsButton.Play:
if (mediaElement1.CurrentState != MediaElementState.Playing)
{
restartSource();
}
else
{
completeClosure();
}
break;
case SystemMediaTransportControlsButton.Pause:
case SystemMediaTransportControlsButton.Stop:
completeClosure();
break;
default:
break;
}
});
}
和:
private async void completeClosure()
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
mediaElement1.Stop();
mediaElement1.Source = null;
timer.Stop();
});
}
private async void restartSource()
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
mediaElement1.Source = new Uri(holdThisSource, UriKind.Absolute);
mediaElement1.Play();
timer.Start();
});
}
当用户按下暂停按钮时,args.Button 显示为“播放”,因此需要检查 MediaElement 的状态。但是,当我尝试恢复到媒体时,它会在 restartSource() 中成功恢复并相应地更新应用程序,但音量控制上的图标不会从播放标志改变,尽管硬件按钮仍然有效。
除此之外,按下硬件停止按钮永远不会起作用,甚至无法显示在 Debug.WriteLine 中。
这是一个在线流媒体应用程序,其中源不允许恢复,因此我必须以这种方式关闭流。
我很想在这方面提供一些帮助。