Windows Store应用程序使用MediaElement播放背景音频

在我的Windows Phone 8.1应用程序中,我正在使用Media Element。 我希望它继续播放音频,即使用户离开应用程序。 MediaElement正在使用来自远程源(.mp4)文件的video。 我也尝试过这里的示例video; http://go.microsoft.com/fwlink/p/?LinkID=272585

我按照如何在后台播放音频(XAML)中的示例,但无法使其工作。 此示例特定于Windows 8.1而不是Windows Phone。

当MediaElement播放video片段时,我按下Windows按钮音频停止,当我回击它继续工作。

我的代码如下;

 

我还在Package.appxmanifest中将Audio定义为支持的任务类型

 public VideoPlayer() { InitializeComponent(); #region SystemMediaTransportControls // Hook up app to system transport controls. systemControls = SystemMediaTransportControls.GetForCurrentView(); systemControls.ButtonPressed += SystemControls_ButtonPressed; // Register to handle the following system transpot control buttons. systemControls.IsPlayEnabled = true; systemControls.IsPauseEnabled = true; systemControls.IsStopEnabled = true; systemControls.IsEnabled = true; #endregion _navigationHelper = new NavigationHelper(this); _navigationHelper.LoadState += NavigationHelper_LoadState; _navigationHelper.SaveState += NavigationHelper_SaveState; } void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) { switch (args.Button) { case SystemMediaTransportControlsButton.Play: PlayMedia(); break; case SystemMediaTransportControlsButton.Stop: StopMedia(); break; case SystemMediaTransportControlsButton.Pause: PauseMedia(); break; default: break; } } private async void StopMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { MediaElement.Stop(); }); } async void PlayMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { MediaElement.Play(); }); } async void PauseMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { MediaElement.Pause(); }); } private void MediaElement_CurrentStateChanged(object sender, RoutedEventArgs e) { if (Debugger.IsAttached) { Debug.WriteLine("MediaElement.CurrentState: " + MediaElement.CurrentState); } switch (MediaElement.CurrentState) { case MediaElementState.Playing: systemControls.PlaybackStatus = MediaPlaybackStatus.Playing; break; case MediaElementState.Paused: systemControls.PlaybackStatus = MediaPlaybackStatus.Paused; break; case MediaElementState.Stopped: systemControls.PlaybackStatus = MediaPlaybackStatus.Stopped; break; case MediaElementState.Closed: systemControls.PlaybackStatus = MediaPlaybackStatus.Closed; break; default: break; } } 

Windows Phone不像Windows那样使用与背景音频相同的机制,主要是因为低规格手机没有足够的资源一次运行两个应用程序。

相反,Windows Phone使用专用的后台进程在后台播放音乐。 有关如何在Windows运行时手机应用程序中执行此操作的详细信息,请参阅BackgroundMediaPlayer