1

WP7 용 뮤직 앱에서 작업 중입니다. 그것은 우리의 서버에서 작은 세그먼트의 형태로 음악을 다운로드합니다 (각 트랙은 128k 암호화 된 조각으로 분할됩니다). AudioPlayerAgent 및 AudioStreamingAgent를 사용하여 음악을 다운로드하고 해독하며 ​​재생합니다.WP7 BackgroundAudioPlayer가 디버거에 연결되어있을 때만 재생됩니다.

F5를 통해 Visual Studio에서 응용 프로그램을 시작하는 동안 모든 것이 잘 작동합니다. 에뮬레이터 또는 기기의 메뉴에서 앱을 시작하면 음악이 재생되지 않는 것을 제외한 모든 것이 잘 작동합니다. 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에 살고 있고 모든 것을 가지고 있다고 생각합니다. 에뮬레이터 메뉴에서 앱을 시작하면 어떻게 될지 추적하려고했습니다. 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월

+0

해결책을 찾았다 고 생각합니다. 다음은 http://goo.gl/baiCN입니다. - 두 가지 유형의 백그라운드 오디오 에이전트는 동일한 프로세스에서 호스팅되며 최대 메모리 제한 인 15MB를 공유합니다. - 디버거에서 실행 중일 때 메모리 및 런타임 제약 조건은 Windows Phone 운영 체제에서 무시됩니다. 내 응용 프로그램에서 순환 버퍼를 사용하여 해독 및 디코딩 된 PCM 데이터를 저장했지만이 버퍼에는 10MB가 넘습니다. 그래서이 버퍼를 작게 만들 때 디버거가 연결되지 않았을 때 앱에서 오디오를 재생하기 시작했습니다. 이것이 도움이되기를 바랍니다. Ragards, Jan ... – jano

답변

1

, 감사합니다.
트랙을 얻는 방법에 대한 설명에 따라 스트리밍 에이전트를 사용하는 것이 더 적절할 것으로 보입니다.
세그먼트 (트랙)를 전환 할 때 각 세그먼트를 직접 재생 (별도의 트랙으로 처리)하고 틈에 문제가없는 경우 재생 에이전트를 사용할 수 있습니다.

여러 개의 배경 오디오 에이전트가 지정되면 앱이 다운 될 수 있습니다. 노트. WMAppManifest 파일을 직접 편집하여 원하지 않는 파일을 제거해야합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. MSDN 코드 샘플 및 http://goo.gl/bX4nm에서 Background Audio Streamer Sample을 따라했습니다. AudioStreamer는 BackgroundAudioPlayer에 대한 세그먼트 및 다운로드 된 PCM 데이터를 다운로드하고 디코딩합니다. Microsoft의 Background Audio Streamer Sample을 다시 확인했으며이 두 가지 BackgroundServiceAgent 작업이 매니페스트에 있습니다. 내 질문에 내 의견을 언급 한 것처럼 문제가 너무 큰 유령 PCM 데이터를 디코딩 된 버퍼가 있습니다. 배경 오디오 에이전트 (스 트리머 + 플레이어)는 15MB의 메모리를 초과 할 수 없습니다. – jano

관련 문제