0

我遇到了替换 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 中。

这是一个在线流媒体应用程序,其中源不允许恢复,因此我必须以这种方式关闭流。

我很想在这方面提供一些帮助。

4

1 回答 1

1

由于您没有更新systemControls.PlaybackStatus,因此传输控制上的控制按钮不会自动更改为正确状态。

systemControls.PlaybackStatus当播放状态发生变化时,您应该始终更新属性。

愿这能解决你的问题。

于 2014-02-18T08:18:52.530 回答