Windows Phone 8 - 2背景音频冲突和两个应用程序终止

Tan*_*rov 3 c# xaml background-agents background-audio windows-phone-8

大约一周前,我为Windows Phone商店提交了一个在线背景广播流媒体应用程序.应用程序非常好(因为我使用模拟器测试它,它在所有可能的部门都很好)但是当我提交它进行认证时,它失败了.

根据错误日志,如果有人已经从音乐+视频中心播放音乐,然后尝试打开此应用程序,则两个应用程序都会崩溃并意外停止.

到目前为止,据我所知,这是因为音乐音乐+视频中心也是背景音乐,同时播放2个背景音乐,应用程序正在崩溃.这可能是其他原因,但所描述的似乎对我更合乎逻辑.

那么,有没有人可以告诉我如何更改音乐+视频中心的应用程序状态?我想暂时暂停或停止音乐+视频中心的应用程序,以便应用程序的两个状态都不相同.通过这种方式,应用程序不会在后台相互冲突.

谁可以在这方面帮助我?

Rom*_*asz 5

使用gameHasControl使用音乐检查其他BAP:

bool gameHasControl = Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl;
if (!gameHasControl)
{
   MessageBox.Show("stopping other player"); // normally you should ask if to do that      
   BackgroundAudioPlayer.Instance.Stop();
}
Run Code Online (Sandbox Code Playgroud)

一旦停止,当您启动BAP时,旧实例将调用Shutdown(),您的BAP将是新的实例,您通常可以使用它.同样是当您的BAP在内存中并且您开始从Music + Video Hub播放时.

只留意,因为当你使用XNA时,你有时需要这样做:

FrameworkDispatcher.Update();
Run Code Online (Sandbox Code Playgroud)

否则你的应用程序有时会崩溃.祝好运.

编辑 - 评论后

要使其工作,您需要添加对Microsoft.Phone.BackgroundAudio的引用或使用如下所示:

Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.Instance.Stop();
Run Code Online (Sandbox Code Playgroud)

BackgroundAudioPlayer是一个Singleton允许你使用的 - 在这种情况下 - 停止播放(当然是给用户选择).