我的 Windows Phone 应用程序被拒绝,因为当我在应用程序的浏览器中播放声音时,它会停止播放现有的背景音乐(拒绝问题 6.5.1)。
如何更新我的应用程序以不停止背景音乐?
我的 JavaScript 是这样的:
var mySound = new Audio(soundpath);
Sound.play(mySound);
我在 Microsoft.Xna.Framework.Media 中找不到任何处理应用程序如何处理浏览器声音的内容,但也许我错过了什么?
我的 Windows Phone 应用程序被拒绝,因为当我在应用程序的浏览器中播放声音时,它会停止播放现有的背景音乐(拒绝问题 6.5.1)。
如何更新我的应用程序以不停止背景音乐?
我的 JavaScript 是这样的:
var mySound = new Audio(soundpath);
Sound.play(mySound);
我在 Microsoft.Xna.Framework.Media 中找不到任何处理应用程序如何处理浏览器声音的内容,但也许我错过了什么?
您正在寻找的是来自 xna 音效
这是我使用的,它对我来说非常适合我的所有音效。(你不能使用带有“音效”对象的音乐,因为它不会通过 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 也可以,但我更喜欢 SoundEffectInstance。
编辑:如果你使用音效,它不会影响正在播放的音乐。
我假设您正在构建本机 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 中进行检查。如果用户说“取消”并且您仍然播放音乐,您将再次失败认证。
有更多关于这个话题的信息在这里。