Я делаю приложение UWP, в котором я запускаю фоновое аудио на главной странице в событии нажатия кнопки. Когда я перехожу на другую страницу, там также есть другой медиафайл для воспроизведения в задаче фонового звука.
Как я могу остановить текущую воспроизводимую задачу, чтобы запустить другую? Должен ли я определять что-то глобально? Любая помощь по этому вопросу?
Изменить
Я использую этот образец: 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, используя BackgroundMediaPLayer.Shutdown()
, но это не сработало.
Есть идеи, как остановить старую песню и воспроизвести текущую?