Windows Phone留下背景音乐播放

时间:2012-12-11 19:39:19

标签: windows-phone-7 windows-phone windows-phone-8

我的Windows Phone应用程序被拒绝,因为当我在我的应用程序中在浏览器中播放声音时,它会停止播放现有的背景音乐(拒绝问题6.5.1)。

如何更新我的应用程序以停止背景音乐?

我的JavaScript是这样的:

var mySound = new Audio(soundpath);

Sound.play(mySound);

我在Microsoft.Xna.Framework.Media中找不到任何处理浏览器声音的方法,但也许我错过了什么?

2 个答案:

答案 0 :(得分:1)

您正在寻找的是来自xna soundeffect

这是我使用的,它对我的​​所有声音效果都很有用。 (您不能将音乐与'soundeffect'对象一起使用,因为它不会通过Windows商店的资格。您必须使用MediaElement音乐) 我不记得你需要哪个,但我有所有这些包括

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Media;

和这个功能

private static void LoadSoundEffect(string fileName, SoundEffectInstance mySound)
{
    var stream = TitleContainer.OpenStream("Sounds/" + fileName);
    var effect = SoundEffect.FromStream(stream);
    FrameworkDispatcher.Update();
    mySound = effect.CreateInstance();   
}

如果您使用SoundEffectInstance,您可以启动,暂停,停止soundeffect等,而不会出现所有问题。

SoundEffect也可以,但我更喜欢SoundEffectInstance。

编辑:如果您使用soundeffect,它将不会影响正在播放的音乐。

答案 1 :(得分:0)

我假设您正在构建本机Windows Phone应用程序(.XAP),然后使用浏览器控件显示您的应用程序内容。如果是这种情况,您需要在首次打开应用程序时执行检查。以下是如何解决该问题的说明。

您需要将这段代码添加到您的应用中(我建议您每次加载/打开应用时都会检查此代码)。添加带using语句的引用以及媒体。

if (Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing)
{               
    MessageBoxResult Choice;               
    Choice = MessageBox.Show("Media is currently playing, do you want to stop it?", "Stop Player", MessageBoxButton.OKCancel);
    if (Choice == MessageBoxResult.OK)
        mediaElement1.Play(); 
}

如果用户允许或禁止播放媒体,则必须在此JavaScript中加入支票。如果用户说“取消”并且您仍在播放音乐,则会再次失败认证。

有关该主题的更多信息here