private async void RadioAppBtn_Click(object sender, RoutedEventArgs e) { AppBarButton btn = sender as AppBarButton; bool error = false; if (btn != null) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { try { if ((btn.Icon as BitmapIcon).UriSource == uriMute) { urlRadio = await RadioUrlParser.Parse(); if (BackgroundMediaPlayer.Current.PlaybackSession.PlaybackState != MediaPlaybackState.Playing) { var message = new ValueSet { { "Play", urlRadio } }; BackgroundMediaPlayer.SendMessageToBackground(message); } } else { BackgroundMediaPlayer.Current.Pause(); } } catch (Exception) { (btn.Icon as BitmapIcon).UriSource = uriMute; error = true; } if (error) { await(new MessageDialog("Ошибка в воспоизведении радио.")).ShowAsync(); } }); } }
/// <summary> /// Вызывается перед отображением этой страницы во фрейме. /// </summary> /// <param name="e">Данные события, описывающие, каким образом была достигнута эта страница. /// Этот параметр обычно используется для настройки страницы.</param> protected override async void OnNavigatedTo(NavigationEventArgs e) { if (urlRadio == null) { try { urlRadio = await RadioUrlParser.Parse(); } catch (AggregateException) { RadioPlayer.IsEnabled = false; } } await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { if (BackgroundMediaPlayer.Current.CurrentState == MediaPlayerState.Paused | BackgroundMediaPlayer.Current.CurrentState == MediaPlayerState.Closed) { RadioPlayer.IsOn = false; } }); BackgroundMediaPlayer.Current.CurrentStateChanged += radioPlayer_CurrentStateChanged; }