UWP媒体播放器的下一首曲目

时间:2019-02-26 01:24:55

标签: c# uwp

我正在使用媒体元素在UWP项目中播放音频,并启用了带有上一个和下一个按钮的TransportControls,这些按钮默认情况下不起作用(按下时什么也没有发生)。 如何在这些按钮上获得“点击”事件?我不知道如何告诉按钮实际播放“下一个”或“上一个”轨道。

1 个答案:

答案 0 :(得分:0)

  

如何在这些按钮上获得“点击”事件?

根据您的要求,您可以收听SystemMediaTransportControls ButtonPressed事件,然后可以按下一个上一个。有关更多信息,请参阅Handle system media transport controls button presses文档。

private async void MyMedia_Loaded(object sender, RoutedEventArgs e)
{  
    var control = MyMedia.MediaPlayer.SystemMediaTransportControls;
    control.ButtonPressed += Control_ButtonPressed;
}

async void Control_ButtonPressed(SystemMediaTransportControls sender,
    SystemMediaTransportControlsButtonPressedEventArgs args)
{
    switch (args.Button)
    {
        case SystemMediaTransportControlsButton.Play:
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                mediaElement.Play();
            });
            break;
        case SystemMediaTransportControlsButton.Pause:
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                mediaElement.Pause();
            });
            break;
        default:
            break;
    }
}

请注意,下一个和上一个按钮仅在播放MediaPlaybackList时有效。因为这是内部事件,因此仅在实际的MediaPlaybackItem播放后才触发。 UWP不提供直接单击事件。如果只想听按钮单击事件。您可以自定义MediaTransportControls。请参阅此document

public sealed class CustomMediaTransportControls : MediaTransportControls
{
    public CustomMediaTransportControls()
    {
        this.DefaultStyleKey = typeof(CustomMediaTransportControls);
    }

    protected override void OnApplyTemplate()
    {
        Button PreviousTrackButton = GetTemplateChild("PreviousTrackButton") as Button;
        PreviousTrackButton.Click += PreviousTrackButton_Click;


        base.OnApplyTemplate();
    }

    private void PreviousTrackButton_Click(object sender, RoutedEventArgs e)
    {

    }

}