Пример #1
0
        public void MediaStateChanged(MediaPlaybackState playbackState)
        {
            switch (playbackState)
            {
            case MediaPlaybackState.None:
                break;

            case MediaPlaybackState.Opening:
                break;

            case MediaPlaybackState.Buffering:
                break;

            case MediaPlaybackState.Playing:
                //WORKAROUND: reactive value changed only after real value changed.
                if (!IsVideosFlyoutVisible)
                {
                    IsVideosFlyoutVisible = true;
                }
                IsVideosFlyoutVisible = false;
                break;

            case MediaPlaybackState.Paused:

                break;

            default:
                break;
            }
            IsShowReleaseInfo = playbackState == MediaPlaybackState.Paused;
        }
Пример #2
0
 /// <summary>
 /// Adjust the UI according to play/pause state
 /// </summary>
 /// <param name="state">The current playing state</param>
 public async void SetActionState(MediaPlaybackState state)
 {
     if (state == MediaPlaybackState.Playing)
     {
         await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             uiUpdateTimer.Start();
             bool manualClick = Play.FocusState == FocusState.Keyboard;
             Play.Visibility  = Visibility.Collapsed;
             Pause.Visibility = Visibility.Visible;
             if (manualClick)
             {
                 Pause.Focus(FocusState.Programmatic);
             }
         });
     }
     else
     {
         await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             uiUpdateTimer.Stop();
             bool manualClick = Pause.FocusState == FocusState.Keyboard;
             Play.Visibility  = Visibility.Visible;
             Pause.Visibility = Visibility.Collapsed;
             if (manualClick)
             {
                 Play.Focus(FocusState.Programmatic);
             }
         });
     }
 }
        public override PlaybackState GetState()
        {
            MediaPlaybackState state = player.PlaybackSession.PlaybackState;

            if (ended && (state == MediaPlaybackState.Paused || state == MediaPlaybackState.None))
            {
                return(PlaybackState.Stopped);
            }
            else if (state == MediaPlaybackState.Opening || state == MediaPlaybackState.Buffering)
            {
                return(PlaybackState.Buffering);
            }
            else if (state == MediaPlaybackState.None)
            {
                return(PlaybackState.None);
            }
            else if (state == MediaPlaybackState.Paused)
            {
                return(PlaybackState.Paused);
            }
            else if (state == MediaPlaybackState.Playing)
            {
                return(PlaybackState.Playing);
            }

            return(PlaybackState.None);
        }
Пример #4
0
        public static MediaPlaybackState GetState(MediaPlaybackState state)
        {
            if (state == MediaPlaybackState.Opening)
            {
                return(MediaPlaybackState.Buffering);
            }

            return(state);
        }
 internal void PostMediaStateChangedEvent(MediaPlaybackState oldValue, MediaPlaybackState newValue)
 {
     LogEventStart(nameof(MediaStateChanged));
     Library.GuiContext.EnqueueInvoke(() =>
     {
         MediaStateChanged?.Invoke(this, new MediaStateChangedEventArgs(oldValue, newValue));
         LogEventDone(nameof(MediaStateChanged));
     });
 }
        public void OnStateChange(MediaPlaybackState state)
        {
            Debug.WriteLine("OnStateChange");

            JObject obj = new JObject();

            obj.Add("state", (int)state);
            SendEvent(Events.PlaybackState, obj);
        }
Пример #7
0
 private static bool IsToastActive(Music music, MediaPlaybackState state)
 {
     lock (CurrentToastMap)
     {
         return(CurrentToastMap.ContainsKey(new ToastKey {
             Music = music, State = state
         }));
     }
 }
Пример #8
0
        protected void UpdateState(MediaPlaybackState state)
        {
            if (prevState == state)
            {
                return;
            }

            manager.OnStateChange(state);
            prevState = state;
        }
 private void SetKeepDisplayWithCurrentState(MediaPlaybackState state)
 {
     if (state == MediaPlaybackState.Paused || state == MediaPlaybackState.None)
     {
         ExitKeepDisplay();
     }
     else
     {
         SetKeepDisplayIfEnable();
     }
 }
Пример #10
0
        public override MediaPlaybackState GetState()
        {
            MediaPlaybackState state = player.PlaybackSession.PlaybackState;

            if (ended && Utils.IsPaused(state))
            {
                state = MediaPlaybackState.None;
            }

            return(Utils.GetState(state));
        }
Пример #11
0
 private void OnPlaybackChanged(object sender, MediaPlaybackState e)
 {
     if (e == MediaPlaybackState.Playing)
     {
         _screensaverService.StartTimer();
     }
     else
     {
         _screensaverService.StopTimer();
     }
 }
Пример #12
0
 private void OnPlaybackStateChanged(object sender, MediaPlaybackState e)
 {
     if (e == MediaPlaybackState.Paused)
     {
         PauseTimer();
     }
     else if (e == MediaPlaybackState.Opening || e == MediaPlaybackState.Playing)
     {
         PlayTimer();
     }
 }
Пример #13
0
 private void UpdateTransportControls(MediaPlaybackState state)
 {
     nextButton.IsEnabled = true;
     prevButton.IsEnabled = true;
     if (state == MediaPlaybackState.Playing)
     {
         playButtonSymbol.Symbol = Symbol.Pause;
     }
     else
     {
         playButtonSymbol.Symbol = Symbol.Play;
     }
 }
Пример #14
0
        private static ToastContent BuildToastContent(Music music, MediaPlaybackState state, NotificationDisplayMode display)
        {
            ToastButton controlButton = null;

            switch (state)
            {
            case MediaPlaybackState.Paused:
                controlButton = BuildToastButton("Play");
                break;

            case MediaPlaybackState.Playing:
                controlButton = BuildToastButton("Pause");
                break;
            }
            var toastContent = new ToastContent()
            {
                Visual = new ToastVisual()
                {
                    BindingGeneric = new ToastBindingGeneric()
                    {
                        Children =
                        {
                            new AdaptiveText()
                            {
                                Text = music.GetToastText()
                            },
                            new AdaptiveProgressBar()
                            {
                                Value = new BindableProgressBarValue("MediaControlPosition"),
                                ValueStringOverride = MusicDurationConverter.ToTime(music.Duration),
                                Title  = new BindableString("Lyrics"),
                                Status = new BindableString("MediaControlPositionTime")
                            }
                        }
                    }
                },
                Actions = new ToastActionsCustom()
                {
                    Buttons =
                    {
                        controlButton, BuildToastButton("Next")
                    }
                },
                ActivationType = ToastActivationType.Background,
                Launch         = "Launch",
                Audio          = SlientToast,
                Scenario       = display == NotificationDisplayMode.Reminder || state == MediaPlaybackState.Paused ? ToastScenario.Reminder : ToastScenario.Default
            };

            return(toastContent);
        }
Пример #15
0
        private void ToggleMediaPlaybackState()
        {
            MediaPlayer        mediaPlayer = musicPlayer.MediaPlayer;
            MediaPlaybackState currState   = mediaPlayer.PlaybackSession.PlaybackState;

            if (currState == MediaPlaybackState.Playing)
            {
                mediaPlayer.Pause();
            }
            else if (currState == MediaPlaybackState.Paused || currState == MediaPlaybackState.None)
            {
                mediaPlayer.Play();
            }
        }
Пример #16
0
 private OcSynthState PlayerStateToSynthState(MediaPlaybackState state)
 {
     if (state == MediaPlaybackState.Buffering || state == MediaPlaybackState.Opening || state == MediaPlaybackState.Playing)
     {
         return(OcSynthState.Busy);
     }
     else if (state == MediaPlaybackState.Paused)
     {
         return(OcSynthState.Paused);
     }
     else
     {
         return(OcSynthState.Ready);
     }
 }
 private void UpdateTransportControls(MediaPlaybackState state)
 {
     Debug.WriteLine($"Enabling Prev/Next Buttons");
     nextBtn.IsEnabled     = true;
     previousBtn.IsEnabled = true;
     if (state == MediaPlaybackState.Playing)
     {
         playButtonSymbol.Symbol = Symbol.Pause;
         Debug.WriteLine($"Media playing");
     }
     else
     {
         playButtonSymbol.Symbol = Symbol.Play;
         Debug.WriteLine($"Media paused");
     }
 }
Пример #18
0
        public void HandleNewState(MediaPlaybackState newState)
        {
            if (_currentState != newState)
            {
                if (newState == MediaPlaybackState.Playing)
                {
                    PlayStart = DateTimeOffset.Now;
                }
                else if (newState == MediaPlaybackState.Paused)
                {
                    TrackDuration(DateTimeOffset.Now);
                    PlayStart = default; // reset
                }

                _currentState = newState;
            }
        }
Пример #19
0
        public static async Task ShowToast(Music music, MediaPlaybackState state)
        {
            if (!App.Inited)
            {
                return;
            }
            if (music == null ||
                Settings.settings.NotificationSend == NotificationSendMode.Never ||
                (state != MediaPlaybackState.Playing && state != MediaPlaybackState.Paused))
            {
                return;
            }
            NotificationDisplayMode display = Settings.settings.NotificationDisplay;

            if (Window.Current.Visible && (display == NotificationDisplayMode.Normal || display == NotificationDisplayMode.Quick))
            {
                return;
            }
            if (IsToastActive(music, state))
            {
                return;
            }
            Helper.Print("show toast");
            ToastNotification toast = await BuildToast(music, state, display);

            lock (CurrentToastMap)
            {
                HideToast();
                CurrentToastMap.TryAdd(new ToastKey {
                    Music = music, State = state
                }, toast);
                try
                {
                    lock (Notifier)
                    {
                        Notifier.Show(toast);
                        Helper.Print("show toast, music: {0}, state: {1}", music.Name, state);
                    }
                }
                catch (Exception)
                {
                    // 通知已发布
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MediaPlayerDialogAudioOutputAdapter"/> class.
        /// </summary>
        public MediaPlayerDialogAudioOutputAdapter()
        {
            this.mediaPlayer = new MediaPlayer()
            {
                AudioCategory = MediaPlayerAudioCategory.Speech,
                Volume        = 1.0,
            };
            this.mediaPlayer.PlaybackSession.PlaybackStateChanged += (session, _) =>
            {
                if (this.lastPlaybackState == MediaPlaybackState.Playing &&
                    session.PlaybackState != MediaPlaybackState.Playing)
                {
                    this.OutputEnded?.Invoke();
                }

                this.lastPlaybackState = session.PlaybackState;
            };
        }
Пример #21
0
        private static async Task <ToastNotification> BuildToast(Music music, MediaPlaybackState state, NotificationDisplayMode display)
        {
            string toastTag = null;

            switch (state)
            {
            case MediaPlaybackState.Paused:
                toastTag = ToastTagPlaying;
                break;

            case MediaPlaybackState.Playing:
                toastTag = ToastTagPaused;
                break;
            }

            var toastContent = BuildToastContent(music, state, display);
            // Create the toast notification
            ToastNotification toast = new ToastNotification(toastContent.GetXml())
            {
                Tag   = toastTag,
                Group = ToastGroup,
                Data  = new NotificationData()
                {
                    SequenceNumber = 0
                },
                ExpiresOnReboot = true
            };

            if (Settings.settings.ShowLyricsInNotification)
            {
                await LyricsHelper.SetLyrics();

                toast.Data.Values["Lyrics"] = LyricsHelper.GetLyrics();
            }
            if (display == NotificationDisplayMode.Quick)
            {
                toast.ExpirationTime = DateTime.Now.AddSeconds(Math.Min(10, music.Duration));
            }
            //toast.Dismissed += (sender, args) => HideToast("Dismissed");
            toast.Data.Values["MediaControlPosition"]     = MediaHelper.Progress.ToString();
            toast.Data.Values["MediaControlPositionTime"] = MusicDurationConverter.ToTime(MediaHelper.Position);
            return(toast);
        }
Пример #22
0
 /// <summary>
 /// 更改音乐播放控件的显示状态
 /// </summary>
 /// <param name="state">播放器的播放状态</param>
 private async void ChangeMusicPlayerVisibility(MediaPlaybackState state)
 {
     if (state == MediaPlaybackState.None)
     {
         await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             musicInfoGrid.Visibility       = Visibility.Collapsed;
             noneMusicStackPanel.Visibility = Visibility.Visible;
         });
     }
     else
     {
         await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
         {
             musicInfoGrid.Visibility       = Visibility.Visible;
             noneMusicStackPanel.Visibility = Visibility.Collapsed;
         });
     }
 }
Пример #23
0
        static void SyncState(MediaPlaybackState state)
        {
            if (previousState == state)
            {
                return;
            }

            previousState   = state;
            trackedPosition = 0;
            Debug.WriteLine("Playback state:" + state);
            switch (state)
            {
            case MediaPlaybackState.None:
                Playlist.CurrentPlaylist.State.IsStreaming = false;
                Playlist.CurrentPlaylist.State.IsPlaying   = false;
                Playlist.CurrentPlaylist.State.IsLoading   = false;
                break;

            case MediaPlaybackState.Buffering:
                Playlist.CurrentPlaylist.State.IsStreaming = true;
                Playlist.CurrentPlaylist.State.IsPlaying   = false;
                Playlist.CurrentPlaylist.State.IsLoading   = false;
                break;

            case MediaPlaybackState.Opening:
                Playlist.CurrentPlaylist.State.IsStreaming = true;
                Playlist.CurrentPlaylist.State.IsPlaying   = false;
                Playlist.CurrentPlaylist.State.IsLoading   = true;
                break;

            case MediaPlaybackState.Paused:
                Playlist.CurrentPlaylist.State.IsStreaming = false;
                Playlist.CurrentPlaylist.State.IsPlaying   = false;
                Playlist.CurrentPlaylist.State.IsLoading   = false;
                break;

            case MediaPlaybackState.Playing:
                Playlist.CurrentPlaylist.State.IsStreaming = false;
                Playlist.CurrentPlaylist.State.IsPlaying   = true;
                Playlist.CurrentPlaylist.State.IsLoading   = false;
                break;
            }
        }
Пример #24
0
        protected void UpdateCurrentTrack(int index, IPromise promise)
        {
            if (queue.Count == 0)
            {
                Reset();
                promise.Reject("queue", "The queue is empty");
                return;
            }
            else if (index < 0)
            {
                index = 0;
            }
            else if (index >= queue.Count)
            {
                index = queue.Count - 1;
            }

            Track              previous = GetCurrentTrack();
            double             position = GetPosition();
            MediaPlaybackState oldState = GetState();

            Debug.WriteLine("Updating current track...");

            Track track = queue[index];

            currentTrack = index;

            Load(track, promise);

            if (Utils.IsPlaying(oldState))
            {
                Play();
            }
            else if (Utils.IsPaused(oldState))
            {
                Pause();
            }

            manager.OnTrackUpdate(previous, position, track, true);
        }
Пример #25
0
 internal void SendOnMediaStateChanged(MediaPlaybackState oldValue, MediaPlaybackState newValue) =>
 Connector?.OnMediaStateChanged(this, oldValue, newValue);
Пример #26
0
 private void PlayerService_PlaybackStateChanged(object sender, MediaPlaybackState e)
 {
     OnPropertyChanged(nameof(AutomationName));
 }
 public CurrentStateChangedMessage(MediaPlaybackState state)
 {
     State = state;
 }
Пример #28
0
 private void PlaybackSession_PlaybackStateChanged(MediaPlaybackSession sender, object args)
 {
     CurrentState = sender.PlaybackState;
     StateChanged?.Invoke(this, CurrentState);
 }
Пример #29
0
 public void SetPlaybackState(MediaPlaybackState state)
 {
     switch (state)
     {
         case MediaPlaybackState.None:
             PlaybackStatus = MediaPlaybackStatus.Closed;
             break;
         case MediaPlaybackState.Opening:
             PlaybackStatus = MediaPlaybackStatus.Changing;
             break;
         case MediaPlaybackState.Buffering:
             PlaybackStatus = MediaPlaybackStatus.Changing;
             break;
         case MediaPlaybackState.Playing:
             PlaybackStatus = MediaPlaybackStatus.Playing;
             break;
         case MediaPlaybackState.Paused:
             PlaybackStatus = MediaPlaybackStatus.Paused;
             break;
         default:
             break;
     }
 }
 public static MediaPlaybackState DefinedOrDefault(this MediaPlaybackState state)
 {
     return(Enum.IsDefined(typeof(MediaPlaybackState), state) ? state : MediaPlaybackState.Unknown);
 }
Пример #31
0
 private void PlayerService_PlaybackStateChanged(object sender, MediaPlaybackState e)
 {
     OnPropertyChanged(nameof(IsCurrentlyPlaying));
 }
 /// <inheritdoc />
 public void OnMediaStateChanged(MediaEngine sender, MediaPlaybackState oldValue, MediaPlaybackState newValue) =>
 Parent?.PostMediaStateChangedEvent(oldValue, newValue);
 private void UpdateTransportControls(MediaPlaybackState state)
 {
     nextButton.IsEnabled = true;
     prevButton.IsEnabled = true;
     if (state == MediaPlaybackState.Playing)
     {
         playButtonSymbol.Symbol = Symbol.Pause;
     }
     else
     {
         playButtonSymbol.Symbol = Symbol.Play;
     }
 }