我正在研究我的Project(一個soundcloud客戶端),並且該應用可以播放曲目很好,但不會在應用程序最小化時播放。我使用MediaElement-Object從網址播放mp3。如何在應用程序處於後臺時強制音樂繼續播放音樂。或者最簡單的方法/最好的解釋教程來實現這一點。我尋找了很好的答案,但是我發現,這些答案對我來說太過分了:D這意味着什麼,我不明白。在UWP中播放背景音頻最簡單的方法是什麼?
1
A
回答
4
要在後臺播放音頻,您必須在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();
});
}
輸出
如果你想使更多的控制,你可以使用可用的屬性爲前做的。
systemControls.IsNextEnabled = true;
,你必須添加case
的按鈕開關。
case SystemMediaTransportControlsButton.Next:
//handle next song
break;
1
您需要使用BackgroundAudio任務才能在Windows Mobile上工作。本文將引導您瞭解Microsoft提供的github示例。 https://blogs.windows.com/buildingapps/2016/01/13/the-basics-of-background-audio/
相關問題
- 1. 播放單音音頻文件的最佳方法是什麼?
- 2. 在iPhone上播放聲音的最簡單方法是什麼?
- 3. 播放循環聲音最簡單的方法是什麼?
- 4. Objective-c/IOS:向後播放音頻文件最簡單的方法是什麼
- 5. 在Android中播放音頻RTMP流最簡單的方法
- 6. 如何在UWP的背景中播放音頻
- 7. 在WPF中播放MP3最簡單的方法是什麼?
- 8. 在Haskell中播放聲音樣本的最簡單方法是什麼?
- 9. WP7:在XNA中播放系統聲音的最簡單方法是什麼
- 10. 構建angularJS音頻播放器的最佳方法是什麼?
- 11. iphone - 播放背景中的音頻流
- 12. 在簡單的遊戲中在Android中播放背景音樂
- 13. 在Windows Phone上播放背景音頻
- 14. 如何在Python腳本的背景中播放音頻(播放)?
- 15. 從delphi的數組數據播放聲音最簡單的方法是什麼
- 16. 有沒有簡單的方法來設置核心音頻回調來訪問播放背景音頻樣本?
- 17. 從wifi攝像頭播放視頻最簡單的方法是什麼?
- 18. 什麼是通過Qt播放音頻的最佳方式?
- 19. 在Mac上從八度音頻播放音頻的可能方法是什麼?
- 20. 是否有簡單的方法來播放WPF中的rtp視頻/音頻流?
- 21. 在Qt中播放通知(頻率x)聲音 - 最簡單的方法?
- 22. 背景音頻不會播放
- 23. 播放背景音頻故障
- 24. 在簡單的iOS遊戲中,音頻的最佳方法是什麼?
- 25. 在Android中中斷/停止背景音頻播放視頻
- 26. 如何在SpeechSynthesizer播放時播放IMFMediaEngine背景音頻
- 27. 在播放視頻時播放背景音樂
- 28. 在iOS中以更高音調播放音樂的最簡單方法是什麼?
- 29. Cocos2d背景聲音不是第二次播放C++/Win10 UWP
- 30. 什麼是合併視頻,音頻和圖像文件的最簡單方法?
謝謝,但結果保持不變 - 當我最小化窗口,你不能聽到音頻了。 – Flauschcoder
編輯:問題解決了,因爲我將MediaElement的AudioCategory-Property設置爲BackgroundCapableMedia。感謝您的回答,您爲我節省了大量工作! – Flauschcoder
編輯2:它適用於PC,但不適用於手機:/ – Flauschcoder