Debugging WP7 BackgroundAudioPlayer仅在连接到调试器时播放

Debugging WP7 BackgroundAudioPlayer仅在连接到调试器时播放,debugging,windows-phone-7,background,audio-streaming,audio-player,Debugging,Windows Phone 7,Background,Audio Streaming,Audio Player,我正在为WP7开发音乐应用程序。它以小片段的形式从我们的服务器下载音乐(每首曲目分成128k个加密片段)。我正在使用AudioPlayerAgent和AudioStreamingAgent下载、解密和播放音乐 当我通过F5从VisualStudio启动应用程序时,一切正常。当我从emulator或设备上的菜单启动应用程序时,一切正常,除了音乐没有播放。背景音频播放器从不启动。不知道我是否尝试调试或发布版本,或者是否在模拟器或真实设备(诺基亚Lumia 710和HTC HD7 Pro)上尝试 我认

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

当我通过F5从VisualStudio启动应用程序时,一切正常。当我从emulator或设备上的菜单启动应用程序时,一切正常,除了音乐没有播放。背景音频播放器从不启动。不知道我是否尝试调试或发布版本,或者是否在模拟器或真实设备(诺基亚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>
我还尝试在MarketplaceTestKit中测试应用程序,若有任何不受支持的Api导致了它,但应用程序通过了所有测试

所以我的问题是:当应用程序只在连接到调试器时才播放时,有人知道吗

谢谢,


一月

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


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

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


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

我想我找到了解决方案。此处:是这样写的:-两种类型的后台音频代理托管在同一进程中,共享最大内存限制为15 MB。-在调试器下运行时,Windows Phone操作系统将忽略内存和运行时约束。在我的应用程序中,我使用循环缓冲区来存储解密和解码的PCM数据以供播放,但这个缓冲区超过了10 MB。所以,当我把这个缓冲区缩小时,应用程序开始在未连接调试器的情况下播放音频。希望这能帮助一些人,Ragards,Jan…我想我找到了解决办法。此处:是这样写的:-两种类型的后台音频代理托管在同一进程中,共享最大内存限制为15 MB。-在调试器下运行时,Windows Phone操作系统将忽略内存和运行时约束。在我的应用程序中,我使用循环缓冲区来存储解密和解码的PCM数据以供播放,但这个缓冲区超过了10 MB。所以,当我把这个缓冲区缩小时,应用程序开始在未连接调试器的情况下播放音频。希望这将有助于某人,Ragards,Jan…嗨,谢谢回复。我已经跟踪了MSDN代码示例中的背景音频拖缆示例和。AudioStreamer为BackgroundAudioPlayer下载并解码段和流解码的PCM数据。我再次检查了微软的背景音频拖缆样本,他们在清单中也有这两个BackgroundServiceAgent任务。正如我在对问题的评论中提到的,问题是拖缆中解码PCM数据的缓冲区太大。背景音频代理(拖缆+播放器)的内存不能超过15MB。您好,感谢回复。我已经跟踪了MSDN代码示例中的背景音频拖缆示例和。AudioStreamer为BackgroundAudioPlayer下载并解码段和流解码的PCM数据。我再次检查了微软的背景音频拖缆样本,他们在清单中也有这两个BackgroundServiceAgent任务。正如我在对问题的评论中提到的,问题是拖缆中解码PCM数据的缓冲区太大。后台音频代理(拖缆+播放器)的内存不能超过15MB。
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