2014-12-22 6 views
3

BackgroundAudioTask을 사용하는 Windows Phone 8.1의 다른 앱에서 내 앱의 BackgroundAudioTask을 취소하면 내 앱으로 돌아 가면 백그라운드에서 오디오가 더 이상 재생되지 않습니다. 앱이 실행 중일 때 정상적으로 재생되지만 일시 중지 된 경우 백그라운드 오디오도 중지됩니다. 이 문제를 재현하는BackgroundAudioTask가 다른 앱에 의해 취소 된 후 작동하지 않습니다.

단계는 다음과 같습니다
나는 BackgroundAudioTask & 모든 것을 가지고있는 윈도우 폰 8.1 응용 프로그램이 잘 작동 시작합니다. 나는 다른 응용 프로그램을 시작합니다. 예를 들어 Music Player는 BackgroundAudioTask을 사용하며 내 응용 프로그램의 BackgroundAudioTask을 취소합니다.

두 번째로 내 앱을 실행하면 원래대로 동작하도록 BackgroundAudioTask을 다시 등록하려고합니다. 내가 처음 실행 메소드가 호출 될 응용 프로그램을 실행하면

<Extensions> 
    <Extension Category="windows.backgroundTasks" EntryPoint="WindowsPhoneBackgroundAudioTask.BackgroundAudioTask"> 
     <BackgroundTasks> 
     <Task Type="audio" /> 
     </BackgroundTasks> 
    </Extension> 
    </Extensions> 

내가 그것을 확인하는 작업에 연기을 추가

Package.appxmanifest 에서 나는 다음과 같은이 내 응용 프로그램을 닫을 때에도 살아남습니다.

public void Run(IBackgroundTaskInstance taskInstance) 
{ 
    setupDeferral = taskInstance.GetDeferral(); 
} 

다른 응용 프로그램에서 음악 플레이어를 시작할 때 groundAudioTask 은 (내가 여기 setupDeferral.Complete()하지 않으면 내 응용 프로그램이 충돌합니다) 이벤트를 호출 취소 :

private void Task_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) 
{ 
    setupDeferral.Complete(); 
} 

이 내 응용 프로그램을 열 때 어떻게 내 BackgroundAudioTask을 다시 만들 수 있습니까? 문제는 Run 메서드가 다시 호출되지 않으므로 Deferral을 다시 설정할 수 없다는 것입니다. 음악은 이제 앱에서 정상적으로 작동하지만 앱에서 다른 곳으로 이동하자마자 음악이 멈 춥니 다.

내가 수동으로 시도 재 등록이 코드로 App_Resuming 이벤트 App.xaml.cs를에서 작업을 : 그것은 트리거 설정이 없기 때문에 위의 코드는 던져 InvalidArgumentException

var taskBuilder = new BackgroundTaskBuilder(); 
taskBuilder.Name = "BackgroundAudioTask"; 
taskBuilder.TaskEntryPoint = typeof(WindowsPhoneBackgroundAudioTask.BackgroundAudioTask).FullName; 
BackgroundTaskRegistration task = taskBuilder.Register(); 

. 나는 그것이 방아쇠를 당기는 것을 원하지 않는다. 배경 작업을 즉시 시작하고 싶습니다.

백그라운드 오디오를 다시 실행하도록 수동으로 지시하거나 취소 된 백그라운드 오디오를보다 효과적으로 처리 할 수있는 방법이 있습니까?

+0

이 문제를 해결할 수 있었습니까? win10 범용 앱에서 비슷한 문제가 있습니다. –

답변

1

나는 이것이 정말로 오래되었다는 것을 알고있다. 그러나 어쩌면 누군가 그것을 알게 될 것이다. 실제로 작업을 등록 할 필요는 없습니다. 배경 오디오의 경우 , 당신이 할 필요가

BackgroundMediaPlayer.Current 

전화가 작업을 실행됩니다, 다음 코드는 연기를 얻을 것입니다.

0

나도이 같은 문제가있었습니다. 백그라운드 오디오 작업은 5 분 동안 사용하지 않았거나 다른 앱으로 인해 취소 된 후에 재생이 시작되지 않았습니다. 나는 마이크로 소프트 here에 의해 주어진 샘플 코드를 언급하고 있었다.

인터넷으로 검색 한 후 해결책을 찾지 못했습니다. 그런 다음 내 코드를 자세히 살펴보면 작업이 취소되면 BackgroundMediaPlayer.Current.CurrentStateMediaPlayerState.Closed이된다는 것을 알게되었습니다.

따라서 작업/배경 오디오 재생을 다시 시작하려면 소스를 다시 BackgroundMediaPlayer.Current으로 설정하십시오. 샘플 코드에서이 미디어 플레이어 개체는 PlaylistManager 프로젝트 구성 요소 내에 mediaPlayer이라는 변수를 사용하여 참조됩니다.

샘플은 작업이 취소 된 후에 재생을 다시 시작할 수 있지만 코드가 작동하지 않습니다.

관련 문제