2012-12-19 2 views
0

J'ai développé une application de lecteur de musique pour Windows Phone 7.5 et Windows Phone 8. Maintenant, je veux écouter de la musique avec différents appareils Bluetooth. Je peux le connecter à mon téléphone et écouter de la musique, donc ça marche très bien. Mais il agit bizarrement dans certains scénarios. Si la musique est en pause, elle reprendra sur les enceintes si je déconnecte le bluetooth. Je peux voir dans mon journal qu'il reçoit une action de l'utilisateur à UserAction.SEEK à la position où il était lorsque j'ai éteint bluetooth. À ce stade, la variable player.Position est en quelque sorte devenue 0, donc il va à 0 et revenir à l'endroit où j'étais. Et je ne fais rien qui puisse causer cette action. Ce que je demande: Y at-il un moyen de prendre le contrôle ou d'obtenir un contrôle dans le AudioPlaybackAgent que j'utilise de ce qui se passe lorsque je fais quelque chose avec mes appareils Bluetooth. Y at-il un événement qui se produit, ou tout cela est-il géré par le système d'exploitation? Si oui, pourquoi mon application se comporte-t-elle différemment de l'application stock? En outre, pourquoi est-ce que je reçois un UserAction.SEEK lorsque j'éteins mon périphérique Bluetooth?Application WP7 et WP8 de contrôle avec casque Bluetooth

Si ma question n'est pas claire, n'hésitez pas à demander!

Répondre

2

Ceci est un problème connu avec la plate-forme, mais il est résolu dans WP8 GDR2. Vous pouvez contourner le problème en détectant une séquence OnUserAction de PauseSeekPlay. Une fois détecté, vous pouvez faire une pause sur le prochain appel à OnPlayerStateChanged. Quelques choses à connaître:

  • appels consécutifs à OnUserAction ne sont pas garantis d'être appelés à la même instance de AudioPlayer, de sorte que tout état doit être stocké dans un état statique.
  • La piste sera lue du haut-parleur pendant un bref moment, vous pouvez régler le volume à 0 (après avoir fait acte de sa valeur précédente, bien sûr)

J'ai posté un Gist to GitHub with a full implementation. Exemple d'utilisation et un aperçu plus détaillé du problème est available on my blog.

Questions connexes