1

私はWP7の音楽アプリで作業しています。私たちのサーバーから小さなセグメントの形で音楽をダウンロードします(各トラックは128k暗号化された断片に分割されます)。私はAudioPlayerAgentとAudioStreamingAgentを使って音楽をダウンロード、復号化、再生しています。WP7 BackgroundAudioPlayerはデバッガに接続している間だけ再生します

私はビジュアルスタジオからF5経由でアプリケーションを起動している間、すべてうまく動作します。エミュレータやデバイスのメニューからアプリを起動すると、音楽が再生されていないことを除いてすべて正常に動作します。 BackgroundAudioPlayerは決して開始しません。デバッグやビルドを試してみたり、エミュレータや実​​際のデバイス(Nokia Lumia 710、HTC HD7 Pro)で試してみると、それほど変わっていません。

<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> 

私はエミュレータのデバッグログを参照してくださいするために、私は隠されたコンソールを有効にできることがわかったいくつかの研究の後:

は私が私が正しくAppManifestにアップsettedすべてのものを持っていると思います。私は、エミュレータメニューからアプリを起動するときに何が起こるかを追跡しようとしました。 BackgroundAudioPlayerトラック、次のメッセージの再生を開始すべきポイントでappers:

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 

私はまた、すべてのサポートされていないAPIがそれを引き起こしている場合MarketplaceTestKitでアプリをテストしようとしましたが、このアプリは、すべてのテスト罰金を通過しました。

私の質問は:誰でも知っているのですが、アプリケーションはデバッガに接続されているときだけ再生されていますか?

は、あなただけのアプリでバックグラウンドオーディオ・エージェントの1種類を持っている必要があり

1月

+0

解決策が見つかりました。ここでは:http://goo.gl/baiCNは以下のように書かれています: - 両方のタイプのバックグラウンドオーディオエージェントは、同じプロセスでホストされ、15 MBの最大メモリ制限を共有します。 - デバッガで実行すると、メモリと実行時の制約はWindows Phoneオペレーティングシステムによって無視されます。 私のアプリケーションでは、復号化されデコードされたPCMデータを格納するために循環バッファを使用しましたが、このバッファは10 MBを超えていました。このバッファを小さくすると、デバッガが接続されていないときにアプリがオーディオを再生し始めました。 これが誰かを助けることを願っています。 Ragards、Jan ... – jano

答えて

1

、ありがとうございました。
トラックをどのように取得しているかについてのあなたの説明に基づいて、ストリーミングエージェントの使用がより適切になると思われます。
セグメント(トラック)を切り替えるときに、各セグメントを直接(別のトラックとして扱う)、ギャップの問題がない場合は、再生エージェントを使用できます。

複数のバックグラウンドオーディオエージェントを指定すると、アプリがクラッシュする可能性があります。注意。 WMAppManifestファイルを直接編集して、不要なファイルを削除する必要があります。

+0

こんにちは、返信ありがとうございます。私は、MSDNのコードサンプルとhttp://goo.gl/bX4nmからBackground Audio Streamer Sampleを追跡しました。 AudioStreamerは、BackgroundAudioPlayerのセグメントおよびダウンロードされたPCMデータをダウンロードおよびデコードします。私はMicrosoftのバックグラウンドオーディオストリーマーサンプルをもう一度チェックし、これらの2つのBackgroundServiceAgentタスクもマニフェストに持っています。私の質問に私のコメントで述べたように、問題はストリーマー内のデコードされたPCMデータのバッファーが大きすぎます。バックグラウンドオーディオエージェント(ストリーマー+プレーヤー)は、15MBのメモリを超えることはできません。 – jano

関連する問題