Metro ui:如何在后台模式下播放音频流

时间:2013-02-18 12:17:03

标签: windows-8

我正在实现应用程序进入后台模式时应该能够播放实时PCM流的音频播放器。到目前为止我尝试过的所有解决方案(XAudio2,IAudioClient2)都会在app进入后台后立即停止播放。 任何帮助都是适当的。感谢。

2 个答案:

答案 0 :(得分:0)

我相信这应该是可能的......它在WP7中,所以不要理解为什么Win8是不可能的。快速搜索产生http://blogs.msdn.com/b/windowsappdev/archive/2012/05/16/being-productive-when-your-app-is-offscreen.aspx,其中包含指向背景音频的构建(是构建)的链接。

这是指WinRT c#sample http://code.msdn.microsoft.com/windowsapps/Background-Audio-in-WinRT-344bcf4d

的链接

此处的另一个显示了将Media Element配置为执行背景音频是多么容易 http://babaandthepigman.wordpress.com/2012/03/17/metro-background-audio-c-consumer-preview/

答案 1 :(得分:0)

您需要将MediaElement与AudioCategory = BackgroundCapable属性一起使用。它需要在XAML页面上实例化。

将此样式应用于根框架:

<Style  x:Key="RootFrameStyle" TargetType="Frame">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Frame">
                <Grid>
                    <MediaElement x:Name="MediaPlayer" AudioCategory="BackgroundCapableMedia" AutoPlay="True"  />
                    <ContentPresenter />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后你可以播放这样的媒体:

var rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);    
var mediaElement = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);

mediaElement.Source = new Uri("ms-appx:///relative/path/to/file.mp3");

然后,您需要在应用清单中声明您的应用能够使用背景音频。

我的博客上的完整说明:http://rikk.it/2012/10/background-audio-in-a-metro-c-sharp-app/