Воспроизведение песни, вызывающей сбой WP7 на телефоне, но не на эмуляторе

13

Я пытаюсь внедрить песню в игру, которая начинает играть и постоянно зацикливается на 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 кбит / с.

Опять же, это прекрасно работает на эмуляторе, но не работает на телефоне. Спасибо за любую помощь, вы можете предоставить!

Михаил Зенич
источник
4
Попробуйте придерживаться try-catch и посмотрите, какое исключение вы получаете. Это должно помочь получить некоторую помощь по этому вопросу.
Рэй Дей
Хороший совет. Исключение: «System.InvalidOperationException: не удалось воспроизвести песню, убедитесь, что песня не защищена DRM». Кроме того, я попытался с песней, закодированной в формате MP3, и получил те же результаты (работал в эмуляторе, не работает в телефоне). Дополнительный вопрос: есть ли простой способ напечатать / сохранить отладочный текст на телефоне? Единственным вариантом было нарисовать текст на экране, хе.
Михаил Zehnich

Ответы:

13

Мы поняли это. Информация доступна онлайн, но она действительно хорошо спрятана, поэтому я опубликую ее здесь для хорошей оценки.

В основном, если телефон привязан к компьютеру и запущено программное обеспечение Zune, он блокирует мультимедиа на телефоне, что означает, что в приложениях MediaPlayers никогда не будет разрешено воспроизводить песню.

Чтобы заставить его работать, пользователь должен отсоединить телефон (т.е. отсоединить USB-кабель) или использовать средство Windows Phone Connect, которое было разработано с учетом этого для отладки: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - я не пробовал этот инструмент, но развязка работала как чудо.

Кроме того, когда приложение не имеет разрешения на воспроизведение песни, оно будет зависать, если исключение не обработано, поэтому обязательно используйте блоки try / catch. Пойманное исключение можно просто игнорировать.

Михаил Зенич
источник
1
Ах, радости DRM.
Яри ​​Комппа
1
Полезно знать, что, черт возьми, это раздражает, но многие разработчики сталкиваются с этой проблемой.
Рэй Дей,
2

Ответ от Михаила Ценича действительно правильный. Однако я наткнулся на еще одну проблему, которая вызывает то же исключение.

Проблема для меня заключалась в том, что мне не хватало возможности ID_CAP_MEDIALIB в моем WMAppManifest.xml.

<Capability Name="ID_CAP_MEDIALIB"/>

Надеюсь это поможет.

mikeesouth
источник