3

BackgroundAudioTask我的应用程序被 Windows Phone 8.1 上的其他应用程序取消BackgroundAudioTask时,当我回到我的应用程序时,它将不再在后台播放音频。当应用程序运行时它会正常播放,但如果它被暂停 - 背景音频也会停止。

重现此问题的步骤是:
我启动 Windows Phone 8.1 应用程序,它有一个BackgroundAudioTask& 一切正常。我启动另一个应用程序,例如音乐播放器,BackgroundAudioTask它会取消BackgroundAudioTask我的应用程序。

当我第二次启动我的应用程序时,我想重新注册我的应用程序,BackgroundAudioTask以便它的行为与最初一样。

Package.appxmanifest我有以下内容:

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

当我第一次运行应用程序时,将调用Run方法,并在任务中添加一个Deferral以确保即使我关闭我的应用程序也能保持活动状态:

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

当我从另一个应用程序启动音乐播放器时,我的 BackgroundAudioTask Canceled事件被调用(如果我不这样做setupDeferral.Complete(),我的应用程序将崩溃):

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

当我打开我的应用程序时,如何重新创建我的BackgroundAudioTask? 问题是该Run方法不再被调用,所以我无法Deferral再次设置。音乐现在可以在应用程序中正常播放,但一旦我离开应用程序,音乐就会停止。

我尝试使用以下代码在 App_Resuming 事件中手动重新注册 App.xaml.cs 中的任务:

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

上面的代码会抛出,InvalidArgumentException因为它没有触发器设置。我不希望它有触发器。我只想立即启动后台任务。

有没有办法手动指示操作系统再次运行背景音频或更好地处理取消的背景音频?

4

2 回答 2

1

我知道这真的很老 - 但也许有人会遇到它。您实际上根本不需要注册任务。在背景音频的情况下,您需要做的就是调用

BackgroundMediaPlayer.Current

它会启动任务,然后你的代码会得到延迟。

于 2015-08-25T17:24:57.870 回答
0

我也有同样的问题。后台音频任务在被取消后没有开始播放 - 由于 5 分钟不活动,或由于另一个应用程序。我指的是微软在这里给出的示例代码。

在互联网上搜索了几个小时后,我没有找到解决方案。然后,进一步挖掘我的代码,我发现当任务被取消时,BackgroundMediaPlayer.Current.CurrentState会变成MediaPlayerState.Closed.

因此,为了重新启动任务/背景音频播放,只需将源设置为BackgroundMediaPlayer.Current再次。在示例代码中,这个媒体播放器对象是使用mediaPlayer在 PlaylistManager 项目组件中命名的变量来引用的。

尽管示例中有一段代码可以在任务取消后重新开始播放,但它不起作用。

于 2015-09-06T09:57:22.013 回答