WP7 BackgroundAudioPlayer проигрывается только при подключении к отладчику - PullRequest
1 голос
/ 15 марта 2012

Я работаю над музыкальным приложением для WP7. Он загружает музыку с наших серверов в виде небольших сегментов (каждый трек разделен на 128 тыс. Зашифрованных фрагментов). Я использую AudioPlayerAgent и AudioStreamingAgent для загрузки, дешифрования и воспроизведения музыки.

Все отлично работает, пока я запускаю приложение из visual studio через F5. Когда я запускаю приложение из меню на эмуляторе или устройстве, все работает нормально, кроме музыки, которая не воспроизводится. BackgroundAudioPlayer никогда не запускается. Не имеет значения, пытаюсь ли я отладить или выпустить сборку, или если я попробую его на эмуляторе или реальном устройстве (Nokia Lumia 710 и HTC HD7 Pro).

Я думаю, что у меня все правильно настроено в AppManifest:

<Capabilities>
  <Capability Name="ID_CAP_GAMERSERVICES" />
  <Capability Name="ID_CAP_IDENTITY_DEVICE" />
  <Capability Name="ID_CAP_IDENTITY_USER" />
  <Capability Name="ID_CAP_LOCATION" />
  <Capability Name="ID_CAP_MEDIALIB" />
  <Capability Name="ID_CAP_MICROPHONE" />
  <Capability Name="ID_CAP_NETWORKING" />
  <Capability Name="ID_CAP_PHONEDIALER" />
  <Capability Name="ID_CAP_PUSH_NOTIFICATION" />
  <Capability Name="ID_CAP_SENSORS" />
  <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
</Capabilities>
<Tasks>     
  <DefaultTask Name="_default" NavigationPage="Panorama.xaml" />
  <ExtendedTask Name="BackgroundTask">
    <BackgroundServiceAgent Specifier="AudioPlayerAgent" Name="AudioPlaybackAgent1" Source="AudioPlaybackAgent1" Type="AudioPlaybackAgent1.AudioPlayer" />
    <BackgroundServiceAgent Specifier="AudioStreamingAgent" Name="AudioStreamAgent1" Source="AudioStreamAgent1" Type="AudioStreamAgent1.AudioTrackStreamer" />
  </ExtendedTask>
</Tasks>

После некоторых исследований я обнаружил, что могу включить скрытую консоль для эмулятора для просмотра журнала отладки. Я попытался отследить, что происходит, когда я запускаю приложение из меню эмулятора. В точке, где BackgroundAudioPlayer должен начать воспроизведение трека, появляются следующие сообщения:

PID:0E8500C6 TID:0EEE006A Sentinels are Disabled for all processes.PID:0E8500C6 TID:0EC500DE Exception 'Raised Exception' (0xc0008005): Thread-Id=0ec500de(pth=c0654930), Proc-Id=0e8500c6(pprc=c05f3160) 'HeadlessHost.exe', VM-active=0e8500c6(pprc=c05f3160) 'HeadlessHost.exe'
PID:0E8500C6 TID:0EC500DE PC=42a629f7(mscoree3_7.dll+0x000529f7) RA=42ac3ae5(mscoree3_7.dll+0x000b3ae5) SP=0634f6b8, BVA=00000000

Я также пытался протестировать приложение в MarketplaceTestKit, если какой-либо неподдерживаемый Api вызывает его, но приложение прошло все тесты в порядке.

Итак, мой вопрос: кто-нибудь знает, когда приложение играет только при подключении к отладчику?

Спасибо,

Январь

1 Ответ

1 голос
/ 15 марта 2012

В вашем приложении должен быть только один тип фонового звукового агента.
Исходя из вашего описания того, как вы получаете треки, кажется, что использование потокового агента будет более подходящим.
Если вывоспроизводите каждый сегмент напрямую (рассматривая его как отдельную дорожку), и нет проблем с пробелами при переключении между сегментами (дорожками), тогда вы можете использовать агент воспроизведения.

Наличие нескольких фоновых аудиоагентовуказанное может привести к сбою приложения.Заметка.Вам нужно будет отредактировать файл WMAppManifest напрямую, чтобы удалить тот, который вам не нужен.

...