在UWP中播放audio的最简单方法是什么?

我正在做我的项目(一个soundcloud客户端)和应用程序可以播放轨道就好了,但不是当应用程序最小化。 我使用MediaElement-Object从url播放mp3。 当应用程序在后台时,如何强制音乐继续播放音乐。 或者什么是最简单的方法/最好的解释教程来实现这一点。 我search了很多好的答案,但是我发现这些答案对我来说太好了。D什么意思,我不明白。

要在后台播放音频,您必须在Package.appxmanifest为后台任务执行声明,启用音频并添加入口点,如TestUWP.MainPage页面。

在这里输入图像说明

同样为了使用户能够轻松地管理音频,您可以使用SystemMediaTransportControls

这是一个使用播放和暂停的基本设置。

XAML

 <MediaElement x:Name="mediaElement" Height="100" Width="100" AreTransportControlsEnabled="True"/> 

C#

 public MainPage() { this.InitializeComponent(); systemControls = SystemMediaTransportControls.GetForCurrentView(); // Register to handle the following system transpot control buttons. systemControls.ButtonPressed += SystemControls_ButtonPressed; mediaElement.CurrentStateChanged += MediaElement_CurrentStateChanged; systemControls.IsPlayEnabled = true; systemControls.IsPauseEnabled = true; } private void MediaElement_CurrentStateChanged(object sender, RoutedEventArgs e) { 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; } } void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) { switch (args.Button) { case SystemMediaTransportControlsButton.Play: PlayMedia(); break; case SystemMediaTransportControlsButton.Pause: PauseMedia(); break; case SystemMediaTransportControlsButton.Stop: StopMedia(); 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, () => { if (mediaElement.CurrentState == MediaElementState.Playing) mediaElement.Pause(); else mediaElement.Play(); }); } async void PauseMedia() { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { mediaElement.Pause(); }); } 

产量

产量

如果你想启用更多的控制,你可以使用ex的可用属性。

systemControls.IsNextEnabled = true;

你必须在按钮开关中添加case

 case SystemMediaTransportControlsButton.Next: //handle next song break; 

您需要使用BackgroundAudio任务才能在Windows Mobile上工作。 本文将引导您通过Microsoft提供的github示例。 https://blogs.windows.com/buildingapps/2016/01/13/the-basics-of-background-audio/