Próbuję zaimplementować utwór w grze, która zaczyna się odtwarzać i ciągle zapętla się w Windows Phone 7 za pośrednictwem XNA 4.0. W emulatorze działa to dobrze, jednak po zainstalowaniu w telefonie po prostu wyświetla czarny ekran przed powrotem do ekranu głównego. Oto nieuczciwy kod, a jego skomentowanie powoduje, że aplikacja działa poprawnie na telefonie:
// 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);
}
Sam plik utworu jest plikiem wma o długości 2:53, 2,28 MB i szybkością transmisji 106 kb / s.
Ponownie działa to doskonale na emulatorze, ale nie działa w ogóle na telefonie. Dzięki za wszelką pomoc, którą możesz udzielić!
Odpowiedzi:
Odkryliśmy to. Informacje są dostępne online, ale są naprawdę dobrze ukryte, więc opublikuję je tutaj dla pewności.
Zasadniczo, jeśli telefon jest podłączony do komputera i działa oprogramowanie Zune, blokuje ono multimedia w telefonie, co oznacza, że MediaPlayers w aplikacjach nigdy nie będzie miał uprawnień do odtwarzania utworu.
Aby to zadziałało, użytkownik musi odłączyć telefon (tj. Odłączyć przewód USB) lub użyć narzędzia Windows Phone Connect, które zostało zaprojektowane z myślą o debugowaniu: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - Nie próbowałem tego narzędzia, ale tethering działał jak urok.
Ponadto, gdy aplikacja nie ma uprawnień do odtwarzania utworu, zawiesi się, chyba że zostanie obsłużony wyjątek, więc upewnij się, że używasz bloków try / catch. Złapany wyjątek można po prostu zignorować.
źródło
Odpowiedź Michaela Zehnicha jest rzeczywiście poprawna. Natknąłem się jednak na inny problem, który powoduje ten sam wyjątek.
Problem polegał na tym, że brakowało mi możliwości ID_CAP_MEDIALIB w moim pliku WMAppManifest.xml.
Mam nadzieję że to pomoże.
źródło