Windows 8 – [Résolu] « The parameter is incorrect » à l’assignation de MediaControls.trackName

Un petit article sur une erreur pas commune mais au moins vous serez prévenu.

Si vous avez une application comme la mienne qui utilise la fonctionnalité « Background Audio » de Windows 8, vous devrez implémenter le mécanisme des MediaControls, pour intégrer la lecture au hardware sur laquelle tourne votre application. Les boutons volume +/- de votre tablette Windows 8 par exemple.

Plus d’information sur la mise en place dans un de mes articles:

Windows Metro – Jouer de l’audio en arrière-plan (background) avec MediaControl et les Media Transport Controls

Tout se passait bien jusqu’au jour où Windows claque une exception:

0x80070057 - JavaScript runtime error: The parameter is incorrect

Le tout à l’assignation de la ligne suivante:

MediaControls.trackName = someString;

Erreur étrange puisque cela fonctionne bien pour beaucoup de valeur passées mais par pour certaines.

Après quelques recherches, il se trouve qu’il y a en fait une limite de taille à la chaîne passée. C’est indiquée dans le document

System Transport Controls Developer Guide

Je cite:

Setting the trackName and artistName on the MediaControl object sets the text in the UI. Note that metadata should be less than 127 characters.

Vous devrez donc faire un substring sur la chaîne pour la tronquer avant d’assigner la valeur de MediaControls.trackName.

Bien sûr, Windows aurait pu éviter de faire exploser l’application pour une restriction connue et pas évidente. Mais non, alors vous devrez le faire à la main :).

Laisser un commentaire

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