Відтворення пісні, що спричинило збій 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
Спробуйте дотримуватися спробу лову і перевірити, який виняток ви отримуєте. Це має допомогти отримати певну допомогу з цього приводу.
Рей Дій

Хороша порада. Виключений виняток - "System.InvalidOperationException: Відтворення пісні не вдалося. Перевірте, чи пісня не захищена DRM". Крім того, я спробував пісню, закодовану як MP3, і отримав ті ж результати (працював в емуляторі, не працює в телефоні). Побічне запитання: чи є простий спосіб надрукувати / зберегти налагоджувальний текст на телефоні ..? Мій єдиний варіант - намалювати текст на екрані, хе.
Михайло Зеніч

Відповіді:


13

Ми це зрозуміли. Інформація доступна в Інтернеті, але вона дійсно добре прихована, тому я розміщую її тут для гарної міри.

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

Для того, щоб змусити його працювати, користувач повинен від'єднати телефон (тобто від'єднати шнур USB) або використовувати інструмент Windows Phone Connect, який був розроблений з огляду на налагодження: http: // msdn. microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx - я не пробував цей інструмент, але інтерес працював як шарм.

Крім того, якщо програма не має дозволу на відтворення пісні, вона вийде з ладу, якщо не буде оброблено виняток, тому обов'язково використовуйте блоки "try / catch". Виключений виняток можна просто ігнорувати.


1
Ах, радості DRM.
Jari Komppa

1
Добре знати, що дратує настільки пекло, як я думаю, досить багато розробників стикаються з цим питанням.
Рей Дей

2

Відповідь Михайла Зеніча справді правильна. Однак я натрапив на іншу проблему, яка спричинила той самий виняток.

Проблема для мене полягала в тому, що мені не вистачало можливості ID_CAP_MEDIALIB у моєму WMAppManifest.xml.

<Capability Name="ID_CAP_MEDIALIB"/>

Сподіваюсь, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.