Как получить статус воспроизведения? (SystemMediaTransportControls) - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно получить статус воспроизведения. Я хочу знать, что-нибудь играет или нет сейчас на Windows. Я пытаюсь использовать SystemMediaTransportControls. Но, похоже, он работает в другом направлении, это позволяет системе глобального управления мультимедиа управлять моим приложением.

var media = SystemMediaTransportControls.GetForCurrentView();
var status = media.PlaybackStatus;
Debug.WriteLine("Media status " + status);

Всегда возвращается Закрыто

Есть идеи, как получить статус воспроизведения?

1 Ответ

0 голосов
/ 24 марта 2020

Пожалуйста, отметьте Ручное управление системой Media Transport Controls Официальное руководство

Вы должны уведомить SystemMediaTransportControls, когда состояние носителя изменилось изменено, так что система может обновить элементы управления, чтобы отразить текущее состояние. Для этого установите для свойства PlaybackStatus соответствующее значение MediaPlaybackStatus из события CurrentStateChanged объекта MediaElement, которое возникает при изменении состояния мультимедиа.

Итак, SMT C PlaybackStatus поступает из Событие MediaElement CurrentStateChanged. И вы можете получить PlaybackStatus со следующим кодом.

void MediaElement_CurrentStateChanged(object sender, RoutedEventArgs e)
{
    switch (mediaElement.CurrentState)
    {
        case MediaElementState.Playing:
            _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Playing;
            break;
        case MediaElementState.Paused:
            _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Paused;
            break;
        case MediaElementState.Stopped:
            _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Stopped;
            break;
        case MediaElementState.Closed:
            _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Closed;
            break;
        default:
            break;
    }
}

Обновление

Мне нужно знать, играет ли какое-либо приложение что-то или нет.

Мы не смогли определить, воспроизводится ли другое приложение в приложении UWP, и вы упомянули, что SMT C, который приходит SystemMediaTransportControls.GetForCurrentView(), относится к текущему приложению, когда вы используете MediaElement для воспроизведения мультимедиа, но не из системы

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