UWP медиаплеер следующий трек - PullRequest
0 голосов
/ 26 февраля 2019

Я использую Media Element для воспроизведения звука в проекте UWP и включил TransportControls с кнопками Previous и Next, которые по умолчанию не работают (при нажатии ничего не происходит).Как получить событие «Нажми» на эти кнопки?Я не знаю, как заставить кнопки воспроизводить трек «Next» или «Previous».

1 Ответ

0 голосов
/ 27 февраля 2019

Как мне получить событие "Click" на этих кнопках?

По вашему требованию вы можете прослушать событие SystemMediaTransportControls ButtonPressed, тогда вы можете получить Далее или Предыдущий нажата.Для получения дополнительной информации см. Обработка системных нажатий кнопок управления транспортировкой мультимедиа документа.

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.Пожалуйста, обратитесь к этому документу .

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)
    {

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...