Ich versuche, ein Lied in ein Spiel zu implementieren, das mit dem Spielen beginnt und unter Windows Phone 7 über XNA 4.0 fortlaufend wiederholt wird. Auf dem Emulator funktioniert dies einwandfrei. Bei der Bereitstellung auf einem Telefon wird jedoch lediglich ein schwarzer Bildschirm angezeigt, bevor Sie zum Startbildschirm zurückkehren. Hier ist der fragliche Schurkencode. Wenn Sie diesen Code auskommentieren, funktioniert die App auf dem Telefon einwandfrei:
// 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);
}
Die Song-Datei selbst ist eine 2:53 lange .wma-Datei mit 2,28 MB und einer Bitrate von 106 KBit / s.
Wieder funktioniert dies perfekt auf dem Emulator, läuft aber überhaupt nicht auf dem Telefon. Vielen Dank für jede Hilfe, die Sie zur Verfügung stellen können!
Antworten:
Wir haben das herausgefunden. Die Informationen sind online verfügbar, aber wirklich gut versteckt, daher werde ich sie aus gutem Grund hier posten.
Grundsätzlich gilt: Wenn das Telefon an einen Computer gebunden ist und die Zune-Software ausgeführt wird, werden die Medien auf dem Telefon gesperrt, was bedeutet, dass MediaPlayers in Apps niemals die Berechtigung haben, einen Song abzuspielen.
Damit es funktioniert, muss der Benutzer das Telefon abkoppeln (dh das USB-Kabel abziehen) oder das Windows Phone Connect-Tool verwenden, das im Hinblick auf das Debuggen für dieses Problem entwickelt wurde: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - Ich habe das Tool nicht ausprobiert, aber das Lösen der Verbindung hat wie ein Zauber funktioniert.
Wenn die App nicht berechtigt ist, einen Titel abzuspielen, stürzt sie ab, es sei denn, die Ausnahme wird behandelt. Verwenden Sie daher unbedingt Try / Catch-Blöcke. Die gefangene Ausnahme kann einfach ignoriert werden.
quelle
Die Antwort von Michael Zehnich ist in der Tat richtig. Allerdings bin ich auf ein anderes Problem gestoßen, das die gleiche Ausnahme verursacht.
Das Problem für mich war, dass mir die ID_CAP_MEDIALIB-Funktion in meiner WMAppManifest.xml fehlte.
Hoffe das hilft.
quelle