在Windows 8应用程序中在后台播放音频文件?

时间:2012-11-12 20:42:04

标签: windows-8 windows-runtime winrt-xaml

我正在开发一个显示信息的应用程序,同时在后台播放音频文件。这是一款Windows 8平板电脑应用。任何帮助或建议都是有帮助的。

由于

3 个答案:

答案 0 :(得分:3)

在XAML中,您将拥有一个具有以下属性的MediaElement

  <ContentControl x:Name="Host">
            <MediaElement Source="Assets/myMusic.mp3" IsLooping="True" AutoPlay="True" AudioCategory="BackgroundCapableMedia" PosterSource="/Images/placeholder-sdk.png" VerticalAlignment="Center" HorizontalAlignment="Center" Name="myMediaElement" Height="350" Width="640" />
  </ContentControl>

在应用栏中,您可以使用一些媒体控制按钮,例如

<Page.BottomAppBar>
    <AppBar Opened="BottomAppBar_Opened" Background="#FF3C3838" x:Name="BottomAppBarColors" Padding="10,0,10,0" AutomationProperties.Name="Bottom App Bar Colors">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="50*"/>
                <ColumnDefinition Width="50*"/>
            </Grid.ColumnDefinitions>
            <StackPanel x:Name="LFullScreenLandscapeViewGrid" Orientation="Horizontal" Grid.Column="0" HorizontalAlignment="Left">
                <Button x:Name="Play" Click="PlayButton_Click" Style="{StaticResource PlayAppBarButtonStyle}" Tag="Play"/>
                <Button x:Name="Stop" Click="StopButton_Click" Style="{StaticResource StopAppBarButtonStyle}" Tag="Stop"/>
            </StackPanel>
            <StackPanel Visibility="Collapsed" x:Name="PortraitViewGrid" Orientation="Horizontal" Grid.ColumnSpan="2" HorizontalAlignment="Right">
                <Button x:Name="PauseCollapsed" Click="PauseButton_Click" Style="{StaticResource PauseAppBarButtonStyle}" Tag="Pause"/>
                <Button x:Name="PlayCollapsed" Click="PlayButton_Click" Style="{StaticResource PlayAppBarButtonStyle}" Tag="Play"/>
                <Button x:Name="StopCollapsed" Click="StopButton_Click" Style="{StaticResource StopAppBarButtonStyle}" Tag="Stop"/>
            </StackPanel>
        </Grid>
    </AppBar>
</Page.BottomAppBar>

在.CS代码文件中,您可以控制mediaelement对象。

        private void PauseButton_Click(object sender, RoutedEventArgs e)
    {
        myMediaElement.Pause();
    }

    private void StopButton_Click(object sender, RoutedEventArgs e)
    {
        myMediaElement.Stop();
    }

    private void ForwardButton_Click(object sender, RoutedEventArgs e)
    {
        myMediaElement.DefaultPlaybackRate = 0.0;
        myMediaElement.PlaybackRate = 2.0;
    }

    private void RewindButton_Click(object sender, RoutedEventArgs e)
    {
        myMediaElement.DefaultPlaybackRate = 0.0;
        myMediaElement.PlaybackRate = -1.0;
    }

答案 1 :(得分:2)

如果您有多个屏幕使用媒体和控件播放,暂停和停止媒体文件,那么最好为这些事件编写一次代码,然后在不同的屏幕上使用它。我看到有人在他们使用媒体的每个屏幕上编写以下代码。

private void PauseButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Pause();
}

private void StopButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Stop();
}

private void ForwardButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = 2.0;
}

private void RewindButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = -1.0;
}

因此,不要在每个屏幕中重复代码,而是遵循良好的事件模式以减少重复代码

最好的方法是使用MVVM模式,您可以在http://code.msdn.microsoft.com/windowsapps/Background-Audio-c-Metro-d2fc7719/view/SourceCode

找到样本

因此,设计是将代码写在一个公共位置,并从前端UI中激活它们。

答案 2 :(得分:1)

您需要使用MediaElement。