Comment utiliser les contrôles de transport de média système (HTML)
[ Cet article est destiné aux développeurs Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
La classe SystemMediaTransportControls permet à votre application d’utiliser les contrôles de transport de média système fournis par Windows et de mettre à jour les informations de média qui sont affichées.
Pour voir cette fonctionnalité en action dans un exemple de lecture de média complet, voir Lecture de contenu multimédia de A à Z.
Introduction
La classe SystemMediaTransportControls introduite dans Windows 8.1 remplace l’ancienne classe MediaControl. Vous devez utiliser la nouvelle classe SystemMediaTransportControls à la place de MediaControl.
Les contrôles de transport système sont différents des contrôles de transport des objets audio ou video. Les contrôles de transport système sont les contrôles qui s’affichent quand l’utilisateur appuie sur une touche de média matériel, telle que la commande de volume d’un casque ou les boutons de média d’un clavier. Si l’utilisateur appuie sur la touche Pause d’un clavier et que votre application prend en charge la classe SystemMediaTransportControls, votre application reçoit une notification et vous pouvez effectuer l’action appropriée.
Votre application peut également mettre à jour les informations sur un média, telles que le titre de la chanson et l’image miniature affichée par SystemMediaTransportControls.
Installer les contrôles de transport
Pour obtenir une instance de la classe SystemMediaTransportControls, appelez getForCurrentView.
Pour activer les boutons que votre application doit gérer, définissez la propriété « is enabled » tels que isPlayEnabled, isPauseEnabled, isNextEnabled et isPreviousEnabled au niveau de l’objet SystemMediaTransportControls. Voir la documentation de référence de SystemMediaTransportControls pour obtenir la liste complète.
Le code ci-dessous crée un objet video avec un gestionnaire d’événements pour les événements paused, playing et ended, puis définit SystemMediaTransportControls. Il active les boutons de lecture et de mise en pause et ajoute un gestionnaire d’événements pour l’événement buttonpressed. Les gestionnaires d’événements pour paused, playing et ended sont présentés plus loin dans cet exemple.
<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;
Communiquer avec les contrôles de transport
Lors de l’utilisation des contrôles de transport, les phases de communication sont au nombre de trois :
La classe SystemMediaTransportControls notifie votre application par le biais de l’événement buttonpressed quand l’utilisateur appuie sur l’un des boutons activés. Votre application peut alors contrôler le média (p.ex., mise en pause ou lecture) en réponse au bouton actionné.
Votre application notifie SystemMediaTransportControls via la propriété SystemMediaTransportControls.playbackStatus dès lors que l’état du média a changé. Cela permet aux contrôles de transport de mettre à jour l’état des boutons de sorte qu’il corresponde à l’état de la source du média.
Vous pouvez mettre à jour les informations du média affichées par les contrôles de transport, telles que le titre de la chanson ou la pochette de l’album, grâce à SystemMediaTransportControlsDisplayUpdater.
Gérer les boutons actionnés
L’événement buttonpressed est déclenché par les contrôles de transport système quand l’utilisateur appuie sur l’un des boutons activés. Les arguments de l’événement de propriété button indiquent sur quel bouton l’utilisateur a appuyé.
Voici le code qui crée un gestionnaire d’événements buttonpressed et des méthodes d’assistance pour lire et mettre en pause l’objet 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;
}
Mettre à jour l’état du média
Pour notifier SystemMediaTransportControls que l’état du média a changé, affectez à playbackStatus la valeur de MediaPlaybackStatus appropriée.
Voici le code qui gère les événements multimédias et qui met à jour la propriété playbackStatus de 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;
}
Mettre à jour les informations et la miniature du média
Utilisez la classe SystemMediaTransportControlsDisplayUpdater pour mettre à jour les informations du média affichées par les contrôles de transport, telles que le titre de la chanson ou la pochette de l’album.
La propriété displayUpdater est la classe SystemMediaTransportControlsDisplayUpdater associée à la classe SystemMediaTransportControls.
Vous pouvez mettre à jour les métadonnées manuellement en définissant les propriétés du média au niveau de musicProperties, imageProperties ou videoProperties. Il est toutefois recommandé et beaucoup plus facile de passer le fichier multimédia à la méthode copyFromFileAsync qui extrait automatiquement les métadonnées et l’image miniature à partir du fichier.
Une fois que vous avez défini toutes les informations du média à afficher, appelez update. L’interface utilisateur n’est pas mise à jour tant que la méthode update n’est pas appelée.
Windows.Storage.StorageFile et Windows.Storage.Streams.RandomAccessStreamReference proposent des méthodes statiques fort utiles lorsqu’il s’agit de travailler sur les informations de média.
Windows : contenu audio en arrière-plan
Pour lire du contenu audio en arrière-plan dans Windows, une application doit activer les boutons de lecture et de mise en pause en affectant à isPlayEnabled et isPauseEnabled la valeur true. L’application doit également gérer l’événement buttonpressed. Pour obtenir des informations sur toutes les conditions à remplir pour pouvoir lire du contenu audio en arrière-plan sur Windows, voir Comment lire du contenu audio en arrière-plan.