How to know when the user presses one of the MediaPlayerElement buttons (play, pause, next track, etc.)?

100 Views Asked by At

I have a UWP Desktop application for playing audios. I'm using a MediaPlayerElement and setting the MediaPlayer's Source property to a MediaPlaybackList. I have two questions:

  1. How to know when the user presses one of the MediaPlayerElement buttons (play, pause, next track, etc.)?

  2. How to change the running track programmatically?

             <MediaPlayerElement x:Name="mediaPlayerElement" 
                                 AutoPlay="False" 
                                 HorizontalAlignment="Center" VerticalAlignment="Top"
                                 Margin="0,0,0,100"
                                 AreTransportControlsEnabled="True" >
                                 <MediaPlayerElement.TransportControls>
                                     <MediaTransportControls 
                                              IsSkipBackwardEnabled="False"
                                              IsSkipBackwardButtonVisible="False"
                                              IsSkipForwardEnabled="False"
                                              IsSkipForwardButtonVisible="False"
                                              IsFastForwardButtonVisible="True"
                                              IsFastForwardEnabled="True"
                                              IsFastRewindButtonVisible="True"
                                              IsFastRewindEnabled="True" 
                                             IsFullWindowButtonVisible="False"
                                             IsNextTrackButtonVisible="True"
                                             IsPreviousTrackButtonVisible="True"
                                             IsZoomButtonVisible="False"/>
                                 </MediaPlayerElement.TransportControls>
                             </MediaPlayerElement>
    
     MediaPlaybackList mediaPlaybackList = new MediaPlaybackList();
    
     public PlayerPage()
     {
         this.InitializeComponent();
    
         CreatePlaylist();
    
         mediaPlayerElement.MediaPlayer.Source = mediaPlaybackList;
     }
    
1

There are 1 best solutions below

1
Nico Zhu On

How to know when the user presses one of the MediaPlayerElement buttons (play, pause, next track, etc.)?

Please refer to the case reply here. And listen SystemMediaTransportControls ButtonPressed event, then you could get Next or Previous pressed.

mediaPlayerElement.MediaPlayer.SystemMediaTransportControls.ButtonPressed += SystemMediaTransportControls_ButtonPressed;

private void SystemMediaTransportControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
    switch (args.Button)
    {
        case SystemMediaTransportControlsButton.Play:
            break;
        case SystemMediaTransportControlsButton.Pause:
            break;
        case SystemMediaTransportControlsButton.Stop:
            break;
        case SystemMediaTransportControlsButton.Record:
            break;
        case SystemMediaTransportControlsButton.FastForward:
            break;
        case SystemMediaTransportControlsButton.Rewind:
            break;
        case SystemMediaTransportControlsButton.Next:
            break;
        case SystemMediaTransportControlsButton.Previous:
            break;
        case SystemMediaTransportControlsButton.ChannelUp:
            break;
        case SystemMediaTransportControlsButton.ChannelDown:
            break;
        default:
            break;
    }
}

How to change the running track programmatically

What's the running track, do you means playing order? MediaPlaybackList has ShuffleEnabled property. You could set it as true to playing shuffle.