C# UWP 一个媒体元素多个屏幕

本文关键字:媒体 元素 屏幕 一个 UWP | 更新日期: 2023-09-27 17:56:48

我正在研究简单的音频播放器。到目前为止,我使用的是BackgroundMediaPlayer,但是当后台音频任务添加到应用程序清单时,它似乎不起作用。 MediaElement工作,但需要添加到屏幕的 XAML 树中。我的应用程序有多个屏幕,这是我的问题。有没有办法在不将其绑定到任何屏幕的情况下使用MediaElement,或者有任何方法可以在多个屏幕上使用它?

谢谢!

C# UWP 一个媒体元素多个屏幕

由于MediaElement旨在支持音频和视频,因此需要将其附加到 UI,以便它可以实际显示视频和媒体控件元素。

如果您正在寻找的只是播放音频,而不需要用户交互(音量控制,播放,暂停,下一个等),也许您可以查看其他类,例如AudioGraph。您也可以在此处找到示例。

我在没有背景音频的 Windows 8.1 中遇到了这个问题。我通过将 MediaElement 放置到应用程序框架中解决了这个问题。

我创建了一个框架样式

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

并在应用启动时将其分配给框架。我可以通过

DependencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
_player = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);