Windows 8 – Jouer un son pendant l’affichage d’une notification Toast

Dans le tutorial précédent, on a vu comment envoyer une notification de type Toast à partir de son application Windows 8 Metro UI:

Windows 8 – Afficher des pop-ups de type Toast

Par défaut, les applications Windows jouent un son court quand le toast est affiché. Vous pouvez annuler ce son ou bien en donner un autre, parmi le catalogue de sons fournis par Windows 8.

Ajout de l’élément audio au template Toast

Par défaut, le template XML du Toast que vous utilisez ne contient pas de balise audio. On va d’abord récupérer une référence vers le noeud « toast » puis créer une balise <audio> qui va venir accueillir nos options audio:

var toastNode = toastXml.selectSingleNode("/toast");
var audio = toastXml.createElement("audio");

Après avoir fixé les options, il vous suffira de faire:

toastNode.appendChild(audio);

Annuler la lecture du son

Pour annuler la lecture du son par défaut, il faut définit la valeur de l’attribut « silent » à true pour la balise <audio>:

audio.setAttribute("silent", "true");

Jouer un son différent parmi le catalogue des sons Windows

Pour changer le son par défaut, vous devrez choisir parmi le catalogue des sons Windows 8 Metro et fixer l’attribut « src » du tag audio à l’identifiant du son comme ceci:

audio.setAttribute("src", "ms-winsoundevent:Notification.IM");

Voici la liste complète sur le site de Microsoft:

The toast audio options catalog (Windows Store apps)

Jouez un son qui se répète (appel, alarme, …)

Vous avez dans le catalogue des sons simples (arrivée d’un email / message, etc) ou répétés (appel, alarme). Pour les sons qui se répètent, vous devrez fixer l’attribut « loop » à « true » dans la balise audio:

audio.setAttribute("loop", "true");

Attention, la répétition du son n’est disponible que pour les toast indiqué comme étant de longue durée.

Spécifier un Toast avec affichage long

Par défaut, un Toast est affiché pendant une courte période de temps. Pour indiquer à Windows que le Toast doit être affiché plus longtemps, pour prévenir l’utilisateur d’un appel entrant par exemple, vous devrez affecter la variable « duration » sur le tag <toast>:

var toastNode = toastXml.selectSingleNode("/toast");
toastNode.setAttribute("duration", "long");

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *