Estoy tratando de implementar una canción en un juego que comienza a reproducirse y se repite continuamente en Windows Phone 7 a través de XNA 4.0. En el emulador, esto funciona bien, sin embargo, cuando se implementa en un teléfono, simplemente muestra una pantalla negra antes de volver a la pantalla de inicio. Aquí está el código falso en cuestión, y comentar este código hace que la aplicación funcione bien en el teléfono:
// 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);
}
El archivo de la canción en sí es un archivo .wma de 2.53 m de largo y 2.28 mb a una velocidad de bits de 106 kbps.
Nuevamente, esto funciona perfectamente en el emulador, pero no se ejecuta en absoluto en el teléfono. ¡Gracias por cualquier ayuda que usted nos pueda proporcionar!
Respuestas:
Nos dimos cuenta de esto. La información está disponible en línea, pero está muy bien oculta, así que la publicaré aquí como medida.
Básicamente, si el teléfono está conectado a una computadora y el software Zune se está ejecutando, bloquea los medios en el teléfono, lo que significa que MediaPlayers en las aplicaciones nunca tendrán permiso para reproducir una canción.
Para que funcione, el usuario debe desconectar el teléfono (es decir, desenchufar el cable USB) o usar la herramienta Windows Phone Connect que se ha diseñado teniendo esto en cuenta con respecto a la depuración: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx : no he probado la herramienta, pero la desconexión funcionó de maravilla.
Además, cuando la aplicación no tiene permiso para reproducir una canción, se bloqueará a menos que se maneje la excepción, así que asegúrese de usar bloques try / catch. La excepción capturada simplemente puede ignorarse.
fuente
La respuesta de Michael Zehnich es de hecho correcta. Sin embargo, me topé con otro problema que causa la misma excepción.
El problema para mí fue que me faltaba la capacidad ID_CAP_MEDIALIB en mi WMAppManifest.xml.
Espero que esto ayude.
fuente