0

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;
     }
    
Jose Afonso
  • 117
  • 8

1 Answers1

0

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.

Nico Zhu
  • 32,367
  • 2
  • 15
  • 36
  • It is the track that is currently playing. For example, mediaplayerelement is playing track 3 of mediaplaybacklist and I need to switch to track 8 programmatically. – Jose Afonso Sep 02 '21 at 20:44