C# UWP 一个媒体元素多个屏幕
本文关键字:媒体 元素 屏幕 一个 UWP | 更新日期: 2023-09-27 17:56:48
我正在研究简单的音频播放器。到目前为止,我使用的是BackgroundMediaPlayer
,但是当后台音频任务添加到应用程序清单时,它似乎不起作用。 MediaElement
工作,但需要添加到屏幕的 XAML 树中。我的应用程序有多个屏幕,这是我的问题。有没有办法在不将其绑定到任何屏幕的情况下使用MediaElement
,或者有任何方法可以在多个屏幕上使用它?
谢谢!
由于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);