3

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

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

到目前为止,我理解,这是因为音乐 + 视频中心的音乐也是背景音乐,同时播放 2 首背景音乐,应用程序崩溃了。可能是其他原因,但所描述的原因对我来说似乎更合乎逻辑。

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

任何人都可以在这方面帮助我吗?

4

1 回答 1

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();
}

一旦它停止,当您启动您的 BAP 时,旧实例调用 Shutdown(),您的 BAP 将成为您可以正常使用的新实例。当您的 BAP 在内存中并且您开始从 Music+Video Hub 播放时也是如此。

只是要小心,因为当你使用 XNA 时,你有时需要做:

FrameworkDispatcher.Update();

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

编辑- 评论后

要使其工作,您需要添加对 Microsoft.Phone.BackgroundAudio 的引用或像这样使用:

Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.Instance.Stop();

BackgroundAudioPlayer 是Singleton您可以使用的 - 在这种情况下 - 停止播放(当然给用户选择)。

于 2014-01-06T20:58:38.440 回答