【问题标题】:Windows Phone leave background music playingWindows Phone 离开背景音乐播放
【发布时间】:2013-03-29 06:22:12
【问题描述】:

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

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

我的 JavaScript 是这样的:

var mySound = new Audio(soundpath);

Sound.play(mySound);

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

【问题讨论】:

  • 如您所见,您是否使用 PhoneGap 或其他一些中间件来开发 Javascript?可能对你的问题有影响。标签有助于定位您的受众。

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


【解决方案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。

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

【讨论】:

    【解决方案2】:

    我假设您正在构建本机 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的信息。

    【讨论】:

    • 亲爱的lawd,甚至不要我是否要停止播放列表。我不想听你的(不是私人的)蹩脚的音乐。另外,OP提到“javascript”,你认为他使用的是PhoneGap或类似的东西?这可以在 PhoneGap 中使用吗?此外,您还想在加载时检查一次。
    • 耶利米,感谢您周到的回答。但我的问题不是如何阻止我的应用程序播放音乐,而是如何让我的应用程序不停止背景音乐。在 iOS 和 Android 应用中仍然可以在播放背景音乐的同​​时播放音效,可能 MS 不支持。
    • 但是再次感谢,如果我找不到更好的选择,我可能需要使用您的解决方案。
    • Joe,MSFT 不允许按照您的上述声明用于 Windows Phone 设备。我提出的解决方案正是您正在寻找的。场景:我是使用 Windows Phone 的用户。我从手机上的音乐播放器播放音乐。播放音乐时,我打开您的应用程序(这是调用代码的点(onload))并收到提示“媒体正在播放,您要停止它吗?” -- 如果我,用户,说“是的,停止它”,那么你(程序员)可以继续播放你喜欢的任何音乐。如果我说“不”,您不能覆盖它,否则您将无法通过 MS 商店认证。
    • MS 的决定令人失望,因为 iOS 和 Android 用户经常一边在后台听音乐一边播放带有音效的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2020-07-06
    相关资源
    最近更新 更多