SystemMediaTransportControls不起作用

时间:2013-10-25 00:24:13

标签: c# windows-8 windows-store-apps windows-8.1

我遇到了取代MediaControl的新SystemMediaTransportControl的问题。

目前,我的应用设置为: -

        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显示为“Play”,因此需要检查MediaElement的状态。但是,当我尝试恢复到媒体时,它会在restartSource()中成功恢复并相应地更新应用程序,但音量控制上的图标不会从Play符号更改,尽管硬件按钮仍然有效。

除此之外,按下硬件停止按钮永远不会工作,甚至无法显示在Debug.WriteLine中。

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

我很乐意帮忙。

1 个答案:

答案 0 :(得分:1)

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

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

这可以解决你的问题。