2013-02-18 72 views
0

我正在實現音頻播放器,它應該能夠在應用程序轉到後臺模式時播放實時PCM流。所有的解決方案(XAudio2,IAudioClient2)我嘗試到目前爲止停止播放應用程序進入後臺。 任何幫助appriciated。謝謝。Metro ui:如何在後臺模式下播放音頻流

回答

0

我相信這應該是可能的..它是在WP7中,所以不明白爲什麼Win8將是不可能的。快速搜索產量http://blogs.msdn.com/b/windowsappdev/archive/2012/05/16/being-productive-when-your-app-is-offscreen.aspx它有一個鏈接到生成(是生成)到背景音頻。

下面是WinRT的C#示例鏈接http://code.msdn.microsoft.com/windowsapps/Background-Audio-in-WinRT-344bcf4d

這裏另外一個由這表明你是配置媒體元素做背景音樂 http://babaandthepigman.wordpress.com/2012/03/17/metro-background-audio-c-consumer-preview/

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/

+0

我感謝您的建議,但對我來說,我需要用我自己寫的渲染器。我已經通過使用SharpDX XAudio2(它是directx的包裝)已經編寫了渲染器。有什麼方法可以使用這些庫在後臺播放音頻?因爲我在我的應用程序中播放RAW PCM音頻。 – 2013-02-18 15:03:19

+0

啊,我明白了。您仍然需要使用MediaElement作爲背景音頻,但是您可以使用mediaElement.SetSource()而不是上面的C#,它允許您分配RandomAccessStream而不是文件Uri。 – rikkit 2013-02-18 15:35:27