J'essaie d'implémenter une chanson dans un jeu qui commence à jouer et boucle continuellement sur Windows Phone 7 via XNA 4.0. Sur l'émulateur, cela fonctionne bien, mais lorsqu'il est déployé sur un téléphone, il donne simplement un écran noir avant de revenir à l'écran d'accueil. Voici le code escroc en question, et commenter ce code rend l'application fonctionne correctement sur le téléphone:
// in the constructor fields
private Song song;
// in the LoadContent() method
song = Content.Load<Song>("song");
// in the Update() method
if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing)
{
MediaPlayer.Play(song);
}
Le fichier de morceau lui-même est un fichier .wma de 2:53, 2,28 Mo à un débit de 106 kbps.
Encore une fois, cela fonctionne parfaitement sur l'émulateur mais ne fonctionne pas du tout sur le téléphone. Merci pour toute l'aide que vous pourrez fournir!
Réponses:
Nous avons compris cela. L'information est disponible en ligne mais elle est vraiment bien cachée, je vais donc la publier ici pour faire bonne mesure.
Fondamentalement, si le téléphone est connecté à un ordinateur et que le logiciel Zune est en cours d'exécution, il verrouille les médias sur le téléphone, ce qui signifie que les MediaPlayers dans les applications n'auront jamais la permission de jouer un morceau.
Pour le faire fonctionner, l'utilisateur doit détacher le téléphone (c'est-à-dire débrancher le cordon USB), ou utiliser l'outil Windows Phone Connect qui a été conçu dans cet esprit en ce qui concerne le débogage: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - Je n'ai pas essayé l'outil, mais le détachement a fonctionné comme un charme.
De plus, lorsque l'application n'est pas autorisée à lire une chanson, elle se bloque à moins que l'exception ne soit gérée, alors assurez-vous d'utiliser des blocs try / catch. L'exception interceptée peut simplement être ignorée.
la source
La réponse de Michael Zehnich est en effet correcte. Cependant, je suis tombé sur un autre problème qui cause la même exception.
Le problème pour moi était que je manquais la capacité ID_CAP_MEDIALIB dans mon WMAppManifest.xml.
J'espère que cela t'aides.
la source