WP7 BackgroundAudioPlayer仅在附加到调试器时播放

时间:2012-03-15 09:23:11

标签: debugging windows-phone-7 background audio-streaming audio-player

我正在为WP7开发音乐应用程序。它以小片段的形式从我们的服务器下载音乐(每个音轨分为128k加密片段)。我正在使用AudioPlayerAgent和AudioStreamingAgent下载,解密和播放音乐。

一切正常,我从Visual Studio通过F5启动应用程序。当我从模拟器或设备上的菜单启动应用程序时,一切正常,除了音乐没有播放。 BackgroundAudioPlayer永远不会启动。如果我尝试调试或发布版本,或者如果我在模拟器或真实设备(诺基亚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中测试app,如果有任何不受支持的Api导致它,但是app通过了所有测试。

所以我的问题是:有人知道吗,而app只在连接到调试器时播放?

谢谢,

一月

1 个答案:

答案 0 :(得分:1)

您的应用中应该只有一种类型的背景音频代理 根据您对如何获取曲目的描述,似乎使用流媒体代理会更合适 如果您正在直接播放每个片段(将其视为单独的曲目),并且当您在片段(曲目)之间切换时没有间隙问题,那么您可以使用播放代理。

指定多个背景音频代理可能会导致您的应用崩溃。注意。您必须直接编辑WMAppManifest文件以删除您不想要的文件。