我正在制作一个UWP应用程序,我在Button Click事件中在MainPage中运行Background Audio . 当我移动到另一个页面时,还有一个不同的媒体可以在后台音频任务中播放 .
如何停止当前播放的任务以运行另一个?我应该在全球定义什么吗?有关此问题的任何帮助?
Edit
我正在使用此示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundAudio当第一页的backgroundAudio正在运行时,我转到第二页,在点击事件中,我使用以下代码设置了一个新列表:
// First update the persisted start track
ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.TrackId, RadioFacade.mySongs[0].MediaUri.ToString()); //here
ApplicationSettingsHelper.SaveSettingsValue(ApplicationSettingsConstants.Position, new TimeSpan().ToString());
// Start task
StartBackgroundAudioTask();
但是新歌的运行时间超过了估计的时间并输入了此方法的其他内容:
private void StartBackgroundAudioTask()
{
AddMediaPlayerEventHandlers();
var startResult = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
bool result = backgroundAudioTaskStarted.WaitOne(10000);
//Send message to initiate playback
if (result == true)
{
MessageService.SendMessageToBackground(new UpdatePlaylistMessage(RadioFacade.mySongs));
MessageService.SendMessageToBackground(new StartPlaybackMessage());
}
else
{
throw new Exception("Background Audio Task didn't start in expected time");
}
});
startResult.Completed = new AsyncActionCompletedHandler(BackgroundTaskInitializationCompleted);
}
而旧的(第一首演奏)歌曲一直在播放 .
我试图使用 BackgroundMediaPLayer.Shutdown()
停止当前的BackgroundMediaPlayer,但它不起作用 .
知道怎么让老歌停下来,当前的歌曲播放?
1 回答
您可以通过从前台向其发送消息来控制后台媒体播放器 . 例如,
从前台应用程序:
在你的后台任务中:
“playnew”可以是您应用程序中的全局常量 . 您可以使用ValueSet将实时流URL作为值传递给后台任务 .