Поделиться через


Использование системных элементов управления транспортировкой мультимедиа (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]

Класс SystemMediaTransportControls позволяет использовать в приложении системные элементы управления транспортировкой мультимедиа, предоставляемые Windows, и обновлять отображаемые сведения о мультимедиа.

Посмотрите, как работает эта функция в полном примере воспроизведения мультимедиа: Воспроизведение медиа, от начала и до конца.

Введение

Класс SystemMediaTransportControls появился в Windows 8.1 и заменяет старый класс MediaControl. Следует использовать новый класс SystemMediaTransportControls вместо MediaControl.

Системные элементы управления транспортировкой отличаются от тех же элементов в объектах audio или video. Системные элементы управления открываются при нажатии клавиши на мультимедийном оборудовании (регулировка громкости на наушниках или клавиши мультимедиа на клавиатуре). Если пользователь нажимает клавишу ПАУЗА на клавиатуре и ваше приложение поддерживает SystemMediaTransportControls, приложение получает уведомление и может выполнить соответствующее действие.

Приложение также может обновлять сведения о мультимедиа, в том числе название композиции и эскиз, отображаемые классом SystemMediaTransportControls.

Настройка элементов управления транспортировкой

Чтобы получить экземпляр класса SystemMediaTransportControls, вызовите getForCurrentView.

Чтобы включить кнопки, которые будут работать в приложении, установите соответствующее свойство "is enabled", например isPlayEnabled, isPauseEnabled, isNextEnabled и isPreviousEnabled, в объекте SystemMediaTransportControls. Полный список см. в справочной документации SystemMediaTransportControls.

Вот код, в котором создается объект video с обработчиком для событий paused, playing и ended и настраивается SystemMediaTransportControls. В коде включаются кнопки воспроизведения и приостановки, добавляется обработчик для события buttonpressed. Обработчики событий paused, playing и ended показаны далее в этом примере.

<video id="mediaVideo" 
       controls 
       src="https://www.contoso.com/clip.mp4"
       onpause="mediaPaused(event)"
       onplaying="mediaPlaying(event)"
       onended="mediaEnded(event)" />
var systemMediaControls;

systemMediaControls = Windows.Media.SystemMediaTransportControls.getForCurrentView();

systemMediaControls.addEventListener("buttonpressed", systemMediaControlsButtonPressed, false);

systemMediaControls.isPlayEnabled = true;
systemMediaControls.isPauseEnabled = true;
systemMediaControls.isStopEnabled = true;

systemMediaControls.playbackStatus = Windows.Media.MediaPlaybackStatus.closed;

Обмен данными с элементами управления транспортировкой

В работе элементов управления транспортировкой можно отметить три аспекта обмена данными.

Когда нажимается одна из включенных кнопок, объект SystemMediaTransportControls уведомляет приложение посредством события buttonpressed. Затем, в зависимости от того, какая кнопка нажата, приложение может выполнить операцию с объектом мультимедиа (например, приостановить или возобновить воспроизведение).

Когда состояние объекта мультимедиа меняется, приложение уведомляет объект SystemMediaTransportControls, используя свойство SystemMediaTransportControls.playbackStatus. Таким образом элементы управления транспортировкой могут обновлять состояние кнопок в соответствии с состоянием источника мультимедиа.

С помощью SystemMediaTransportControlsDisplayUpdater вы можете обновлять сведения о мультимедиа, которые отображаются элементами управления транспортировкой (название композиции, обложка альбома и т. п.).

Обработка нажатия кнопок

Когда нажимается одна из включенных кнопок, системные элементы управления транспортировкой вызывают событие buttonpressed. По аргументам события для свойства button определяется, какая кнопка была нажата.

Вот код, в котором создаются обработчик событий buttonpressed и вспомогательные методы для воспроизведения и приостановки video.

// Event handler for SystemMediaTransportControls' buttonpressed event
function systemMediaControlsButtonPressed(eventIn) {

    var mediaButton = Windows.Media.SystemMediaTransportControlsButton;

    switch (eventIn.button) {
        case mediaButton.play:
            playMedia();
            break;

        case mediaButton.pause:
            pauseMedia();
            break;

        case mediaButton.stop:
            stopMedia();
            break;

        // Insert additional case statements for other buttons you want to handle
    }
}

// Plays the media.
function playMedia() {
    var media = document.getElementById("mediaVideo");
    media.play();
}

// Pauses the media.
function pauseMedia() {
    var media = document.getElementById("mediaVideo");
    media.pause();
}

// Stops the media.
function stopMedia() {
    var media = document.getElementById("mediaVideo");
    media.pause();
    media.currentTime = 0;
}

Обновление состояния мультимедиа

Чтобы уведомить SystemMediaTransportControls об изменении состояния мультимедиа, установите для свойства playbackStatus соответствующее значение MediaPlaybackStatus.

Вот код, обрабатывающий события мультимедиа и обновляющий свойство playbackStatus элемента SystemMediaTransportControls.

// The media Play event handler.
function mediaPlaying() {
    // Update the SystemMediaTransportControl state.
    systemMediaControls.playbackStatus = Windows.Media.MediaPlaybackStatus.playing;
}

// The media Pause event handler.
function mediaPaused() {
    // Update the SystemMediaTransportControl state.
    systemMediaControls.playbackStatus = Windows.Media.MediaPlaybackStatus.paused;
}

// The media Ended event handler.
function mediaEnded() {
    // Update the SystemMediaTransportControl state.
    systemMediaControls.playbackStatus = Windows.Media.MediaPlaybackStatus.stopped;
}

Обновление эскиза и данных о мультимедиа

Класс SystemMediaTransportControlsDisplayUpdater позволяет обновлять сведения о мультимедиа, которые отображаются элементами управления транспортировкой (название композиции, обложка альбома и т. п.).

Свойство displayUpdater — это свойство SystemMediaTransportControlsDisplayUpdater, связанное с элементами SystemMediaTransportControls.

Вы можете обновить метаданные вручную, установив для свойства мультимедиа значение musicProperties, imageProperties или videoProperties, но намного проще передать файл мультимедиа в метод copyFromFileAsync, который автоматически извлекает метаданные и эскиз из файла.

После задания всех отображаемых данных о мультимедиа вызовите метод update. Пользовательский интерфейс не обновляется до вызова update.

Windows.Storage.StorageFile и Windows.Storage.Streams.RandomAccessStreamReference предоставляют полезные статические методы для работы с данными о мультимедиа.

StorageFile

RandomAccessStreamReference

Windows: фоновый звук

Чтобы воспроизводить в Windows звуки в фоновом режиме, в приложении необходимо включить кнопки воспроизведения и приостановки, установив для свойств isPlayEnabled и isPauseEnabled значение true. Кроме того, приложение должно обрабатывать событие buttonpressed. Дополнительные сведения обо всех требованиях к воспроизведению звука в фоновом режиме в Windows см. в разделе Как воспроизводить звук в фоновом режиме.