Я пытаюсь внедрить песню в игру, которая начинает играть и постоянно зацикливается на Windows Phone 7 через XNA 4.0. На эмуляторе это работает нормально, однако при развертывании на телефоне он просто дает черный экран, прежде чем вернуться на домашний экран. Вот этот мошеннический код, и комментирование этого кода заставляет приложение нормально работать на телефоне:
// 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);
}
Сам файл песни имеет размер 2:53, 2,28 Мб .wma, скорость передачи данных 106 кбит / с.
Опять же, это прекрасно работает на эмуляторе, но не работает на телефоне. Спасибо за любую помощь, вы можете предоставить!
Ответы:
Мы поняли это. Информация доступна онлайн, но она действительно хорошо спрятана, поэтому я опубликую ее здесь для хорошей оценки.
В основном, если телефон привязан к компьютеру и запущено программное обеспечение Zune, он блокирует мультимедиа на телефоне, что означает, что в приложениях MediaPlayers никогда не будет разрешено воспроизводить песню.
Чтобы заставить его работать, пользователь должен отсоединить телефон (т.е. отсоединить USB-кабель) или использовать средство Windows Phone Connect, которое было разработано с учетом этого для отладки: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - я не пробовал этот инструмент, но развязка работала как чудо.
Кроме того, когда приложение не имеет разрешения на воспроизведение песни, оно будет зависать, если исключение не обработано, поэтому обязательно используйте блоки try / catch. Пойманное исключение можно просто игнорировать.
источник
Ответ от Михаила Ценича действительно правильный. Однако я наткнулся на еще одну проблему, которая вызывает то же исключение.
Проблема для меня заключалась в том, что мне не хватало возможности ID_CAP_MEDIALIB в моем WMAppManifest.xml.
Надеюсь это поможет.
источник