Exemplo n.º 1
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)
                {
                    // 通知已发布
                }
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }