0

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

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

我的 JavaScript 是这样的:

var mySound = new Audio(soundpath);

Sound.play(mySound);

我在 Microsoft.Xna.Framework.Media 中找不到任何处理应用程序如何处理浏览器声音的内容,但也许我错过了什么?

4

2 回答 2

1

您正在寻找的是来自 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。

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

于 2013-03-28T22:22:12.213 回答
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 中进行检查。如果用户说“取消”并且您仍然播放音乐,您将再次失败认证。

有更多关于这个话题的信息在这里

于 2012-12-11T20:45:55.183 回答