internal async void Resume() { if (CurrentPlayer == null) { return; } if (CurrentPlayer.Source == null) { return; } if (CurrentPlayer.PlaybackSession?.PlaybackState != MediaPlaybackState.Paused) { return; } if (!CurrentStreamer.PollConnection()) { //connection is stale. reconnect //NepApp.UI.Overlay.ShowSnackBarMessageAsync("This station has been paused for a while. It will jump ahead."); var stream = CurrentStream; ShutdownPreviousPlaybackSession(); var controller = await NepApp.UI.Overlay.ShowProgressDialogAsync("Reconnecting...", "Please wait..."); controller.SetIndeterminate(); try { await TryStreamStationAsync(stream); await controller.CloseAsync(); } catch (Neptunium.Core.NeptuniumException ex) { await controller.CloseAsync(); await NepApp.UI.ShowInfoDialogAsync("Uh-oh! Couldn't reconnect for some reason!", ex.Message); ShutdownPreviousPlaybackSession(); } } else { //resume playback CurrentPlayer.Play(); } }
private void ShutdownPreviousPlaybackSession() { if (CurrentStreamer == null && CurrentPlayer == null) { return; } if (CurrentStreamer != null) { CurrentStreamer.MetadataChanged -= Streamer_MetadataChanged; if (IsPlaying) { CurrentStreamer.Pause(); } CurrentStreamer.Dispose(); CurrentStreamer = null; } if (CurrentPlayer != null) { CurrentPlayer.MediaFailed -= CurrentPlayer_MediaFailed; CurrentPlayerSession.PlaybackStateChanged -= PlaybackSession_PlaybackStateChanged; CurrentPlayer.Dispose(); CurrentPlayer = null; } CurrentStream = null; NepApp.SongManager.ResetMetadata(); SetMediaEngagement(false); IsPlaying = false; if (MediaTransportControls != null) { MediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Closed; } IsPlayingChanged?.Invoke(this, new NepAppMediaPlayerManagerIsPlayingEventArgs(IsPlaying)); }
public async Task FadeVolumeUpToAsync(double value) { await CurrentStreamer?.FadeVolumeUpToAsync(value); }