c# - 在Windows Phone 8中播放背景声音和声音效果

标签 c# audio windows-phone-8 playback

我对Windows Phone 8设备的声音播放进行了很多研究,发现了多种解决方案,但它们与我的情况并不完全匹配。

我需要的是:我正在编写一个使用文件作为背景声音的应用程序(C#+ XAML)(在浏览整个应用程序时必须处于 Activity 状态),并且还能够播放音效。

有什么问题:

  • 对于背景声音,我可以使用BackgroundAudio代理,但它不符合我的要求,因为我希望声音仅在应用程序的后台播放,并且在我的应用程序关闭或未激活时停止播放。
  • 对于声音效果-我尝试了MediaElement,这没问题,但在浏览整个应用程序时,我无法使其以某种方式播放。如果我离开该页面,媒体将关闭-我想我可以将其用于音效技巧。另外,还有SoundEffect并不是一个很好的解决方案,因为它只能播放.wav文件...我只能将其用于声音效果,而不能用于背景声音(大文件)。

  • 因此,如果我选择MediaElement / SoundEffect在应用程序中播放声音效果,应该如何继续播放背景声音(仅在我的应用程序内部)。我需要一个解决方案,允许我一次播放2种声音(背景和声音效果),并且仅在应用程序运行时( Activity )播放背景声音...

    到目前为止,我很困惑,只能解决声音效果问题。

    任何建议,不胜感激。

    最佳答案

    您在MediaElement上看到的问题是您将其定义为应用程序页面的一部分,并且一旦它消失在可视树之外(即OnNavigatedFrom之后),它就会停止播放。

    如果您将MediaElement定义为“可见”作为应用程序框架的一部分,则在您的应用程序处于 Activity 状态时,音频将继续播放(您自然需要处理停用事件)。

    如果您这样做,MediaElement应该适用于您的“背景音频”。

    请注意,您的应用程序中只能有一个 Activity 的MediaElement播放媒体,但是您应该可以将SoundEffect用于声音效果。

    更新:

    要将MediaElement放入框架中,您将需要创建一个自定义PhoneApplicationFrame类/ XAML,将MediaElement添加到该XAML中,并在App.xaml.cs中引用您的自定义框架。

    // Do not add any additional code to this method
    private void InitializePhoneApplication()
    {
        if (phoneApplicationInitialized)
            return;
    
        // Create the frame but don't set it as RootVisual yet; this allows the splash
        // screen to remain active until the application is ready to render.
        RootFrame = new MyCustomPhoneApplicationFrame();
        RootFrame.Navigated += CompleteInitializePhoneApplication;
    

    参见this Dzone article for more about Frame/Page in Windows Phone

    关于c# - 在Windows Phone 8中播放背景声音和声音效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515823/

    相关文章:

    audio - MPlayer音频 channel (左/右)切换

    azure - “us-ascii”不是 Windows Phone 8/Azure 上支持的编码名称

    c# - Html 通过 lambda 扩展模型的两个属性

    c# - Windows 窗体复选框已更改还是已更新?

    c# - Windows 应用程序中的异常处理 C#

    android - Android-手动将()写入AudioTrack,没有适当的MediaRecorder.AudioSource

    javascript - 用Java暂停音频

    c# - 当内容高度可变时,列表框滚动条拇指改变大小

    c# - 如何通过在页面上显示半透明控件来禁用Windows Phone上的所有控件?

    windows-phone-7 - 仅限 Windows Phone 8 的应用程序的 DeviceUniqueId 是否特定于应用程序而不是设备?