我的Windows Phone应用程序被拒绝,因为当我在我的应用程序中在浏览器中播放声音时,它会停止播放现有的背景音乐(拒绝问题6.5.1)。
如何更新我的应用程序以停止背景音乐?
我的JavaScript是这样的:
var mySound = new Audio(soundpath);
Sound.play(mySound);
我在Microsoft.Xna.Framework.Media中找不到任何处理浏览器声音的方法,但也许我错过了什么?
答案 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。