Пример #1
0
        // receive event notifications from MusicBee
        // you need to set about.ReceiveNotificationFlags = PlayerEvents to receive all notifications, and not just the startup event
        public void ReceiveNotification(string sourceFileUrl, NotificationType type)
        {
            switch (type)
            {
            case NotificationType.PluginStartup:
                systemMediaControls = BackgroundMediaPlayer.Current.SystemMediaTransportControls;
                systemMediaControls.PlaybackStatus                   = MediaPlaybackStatus.Closed;
                systemMediaControls.IsEnabled                        = false;
                systemMediaControls.IsPlayEnabled                    = true;
                systemMediaControls.IsPauseEnabled                   = true;
                systemMediaControls.IsStopEnabled                    = true;
                systemMediaControls.IsPreviousEnabled                = true;
                systemMediaControls.IsNextEnabled                    = true;
                systemMediaControls.IsRewindEnabled                  = false;
                systemMediaControls.IsFastForwardEnabled             = false;
                systemMediaControls.ButtonPressed                   += systemMediaControls_ButtonPressed;
                systemMediaControls.PlaybackPositionChangeRequested += systemMediaControls_PlaybackPositionChangeRequested;
                systemMediaControls.PlaybackRateChangeRequested     += systemMediaControls_PlaybackRateChangeRequested;
                systemMediaControls.ShuffleEnabledChangeRequested   += systemMediaControls_ShuffleEnabledChangeRequested;
                systemMediaControls.AutoRepeatModeChangeRequested   += systemMediaControls_AutoRepeatModeChangeRequested;
                displayUpdater      = systemMediaControls.DisplayUpdater;
                displayUpdater.Type = MediaPlaybackType.Music;
                musicProperties     = displayUpdater.MusicProperties;
                SetDisplayValues();
                break;

            case NotificationType.PlayStateChanged:
                SetPlayerState();
                break;

            case NotificationType.TrackChanged:
                SetDisplayValues();
                break;
            }
        }
        public MediaControlBarViewModel()
        {
            ShuffleButtonVisible = false;
            RepeatButtonVisible  = false;
            Volume = 100;
            DevicesButtonVisible   = true;
            DevicesButtonColor     = new SolidColorBrush(Colors.Black);
            ConnectionBarVisible   = false;
            ConnectionBarColor     = AppConstants.RedBrush;
            ConnectionBarText      = "Disconnected";
            ReconnectButtonEnabled = true;

            PlayPauseIcon = Symbol.Play;
            systemMediaTransportControls = SystemMediaTransportControls.GetForCurrentView();
            systemMediaTransportControls.IsPlayEnabled     = true;
            systemMediaTransportControls.IsPauseEnabled    = true;
            systemMediaTransportControls.IsNextEnabled     = true;
            systemMediaTransportControls.IsPreviousEnabled = true;
            systemMediaTransportControls.ButtonPressed    += SystemMediaTransportControls_ButtonPressed;
            systemMediaTransportControls.PlaybackStatus    = MediaPlaybackStatus.Closed;
            display      = systemMediaTransportControls.DisplayUpdater;
            display.Type = MediaPlaybackType.Music;
            display.Update();

            WebPlayerViewModel.WebPlaybackStateChanged += WebPlayerViewModel_WebPlaybackStateChanged;
        }
 public async Task SetMediaTransportControlsInfo(string title)
 {
     await App.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         try
         {
             if (_systemMediaTransportControls == null)
             {
                 return;
             }
             LogHelper.Log("PLAYVIDEO: Updating SystemMediaTransportControls");
             SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;
             updater.Type = MediaPlaybackType.Video;
             _systemMediaTransportControls.IsPreviousEnabled = false;
             _systemMediaTransportControls.IsNextEnabled     = false;
             //Video metadata
             updater.VideoProperties.Title = title;
             //TODO: add full thumbnail suport
             updater.Thumbnail = null;
             updater.Update();
         }
         catch (Exception exception)
         {
             ExceptionHelper.CreateMemorizedException("MediaPlaybackViewModel.SetMediaTransportControls(title)", exception);
         }
     });
 }
Пример #4
0
        private async void TracklistPlayer_SongChanged(object sender, SongChangedEventArgs e)
        {
            SystemMediaTransportControlsDisplayUpdater updater = this.systemMediaControls.DisplayUpdater;

            StorageFile file = await SongImageUtil.LoadStorageFileAsync(e.NewSong.SongId);

            if (file == null)
            {
                updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(ImageUtil.GetAssetsImageUriByFileName("Favor.png"));
            }
            else
            {
                updater.Thumbnail = RandomAccessStreamReference.CreateFromFile(file);
            }

            Song currentSong = this.CurrentSong;

            updater.Type = MediaPlaybackType.Music;
            updater.MusicProperties.Title       = currentSong.Title;
            updater.MusicProperties.TrackNumber = (uint)currentSong.Track;
            updater.MusicProperties.AlbumTitle  = currentSong.Album.Name;
            updater.MusicProperties.AlbumArtist = currentSong.Album.Artist.Name;
            updater.MusicProperties.Artist      = currentSong.Album.Artist.Name;

            updater.Update();
        }
Пример #5
0
 public static void InitializeHyPlaylist()
 {
     Player = new MediaPlayer()
     {
         AutoPlay         = true,
         IsLoopingEnabled = false
     };
     MediaSystemControls                   = SystemMediaTransportControls.GetForCurrentView();
     ControlsDisplayUpdater                = MediaSystemControls.DisplayUpdater;
     Player.CommandManager.IsEnabled       = false;
     MediaSystemControls.IsPlayEnabled     = true;
     MediaSystemControls.IsPauseEnabled    = true;
     MediaSystemControls.IsNextEnabled     = true;
     MediaSystemControls.IsPreviousEnabled = true;
     MediaSystemControls.IsEnabled         = false;
     MediaSystemControls.ButtonPressed    += SystemControls_ButtonPressed;
     MediaSystemControls.PlaybackStatus    = MediaPlaybackStatus.Closed;
     Player.SourceChanged                 += Player_SourceChanged;
     Player.MediaEnded                      += Player_MediaEnded;
     Player.CurrentStateChanged             += Player_CurrentStateChanged;
     Player.VolumeChanged                   += Player_VolumeChanged;
     Player.PlaybackSession.PositionChanged += PlaybackSession_PositionChanged;
     Player.MediaFailed                     += PlayerOnMediaFailed;
     Player.BufferingStarted                += Player_BufferingStarted;
     Player.BufferingEnded                  += Player_BufferingEnded;
     ;
     Common.GLOBAL["PERSONALFM"] = "false";
 }
 public async Task SetMediaTransportControlsInfo(string title)
 {
     await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () =>
     {
         try
         {
             if (_systemMediaTransportControls == null)
             {
                 return;
             }
             LogHelper.Log("PLAYVIDEO: Updating SystemMediaTransportControls");
             SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;
             updater.Type = MediaPlaybackType.Video;
             _systemMediaTransportControls.IsPreviousEnabled = false;
             _systemMediaTransportControls.IsNextEnabled     = false;
             //Video metadata
             updater.VideoProperties.Title = title;
             //TODO: add full thumbnail suport
             updater.Thumbnail = null;
             updater.Update();
         }
         catch (Exception e)
         {
             LogHelper.Log(StringsHelper.ExceptionToString(e));
         }
     });
 }
        async private void updateMediaOverlay()
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                SystemMediaTransportControlsDisplayUpdater mediaOverlay = systemControls.DisplayUpdater;
                mediaOverlay.Type = Windows.Media.MediaPlaybackType.Music;

                String episode, podcast, artURI;

                episode = "";
                podcast = "";
                artURI  = "ms-appx:///Assets/StoreLogo.scale-400.png";
                status  = "false";

                try
                {
                    episode = await webEntryPoint.InvokeScriptAsync("eval", new string[] { getEpisodeCommand });
                    podcast = await webEntryPoint.InvokeScriptAsync("eval", new string[] { getPodcastCommand });
                    artURI  = await webEntryPoint.InvokeScriptAsync("eval", new string[] { getArtCommand });
                    status  = await webEntryPoint.InvokeScriptAsync("eval", new string[] { statusCommand });
                }
                catch (Exception ex)
                {
                }

                mediaOverlay.MusicProperties.Artist = podcast;
                mediaOverlay.MusicProperties.Title  = episode;
                mediaOverlay.Thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri(artURI));

                mediaOverlay.Update();

                SystemMediaTransportControls.GetForCurrentView().PlaybackStatus = status.Equals("true") ? MediaPlaybackStatus.Playing : MediaPlaybackStatus.Paused;
            });
        }
Пример #8
0
        private static void _mediaPlaybackList_CurrentItemChanged(MediaPlaybackList sender, CurrentMediaPlaybackItemChangedEventArgs args)
        {
            //switch (musicPlayMode)
            //{
            //    case MusicPlayMode.listLoop:
            //        _mediaPlaybackList.ShuffleEnabled = false;
            //        _mediaPlaybackList.AutoRepeatEnabled = true;
            //        break;
            //    case MusicPlayMode.songLoop:

            //        _mediaPlaybackList.MoveTo(_mediaPlaybackList.CurrentItemIndex);
            //        break;
            //    case MusicPlayMode.random:
            //        _mediaPlaybackList.ShuffleEnabled = true;
            //        break;
            //    case MusicPlayMode.sequence:
            //        _mediaPlaybackList.ShuffleEnabled = false;
            //        _mediaPlaybackList.AutoRepeatEnabled = false;
            //        break;
            //    default:
            //        break;
            //}
            if (_mediaPlaybackList.Items.Count == 0)
            {
                return;
            }
            if (MediaChanged != null)
            {
                MediaChanged(sender, playList[Convert.ToInt32(_mediaPlaybackList.CurrentItemIndex)]);
            }
            if (DisplayEvent != null)
            {
                DisplayEvent(null, Visibility.Visible);
            }


            var _systemMediaTransportControls = _mediaPlayer.SystemMediaTransportControls;

            var timelineProperties = new SystemMediaTransportControlsTimelineProperties();
            // _systemMediaTransportControls = SystemMediaTransportControls.GetForCurrentView();
            // Fill in the data, using the media elements properties
            SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;

            updater.Type = MediaPlaybackType.Music;
            updater.MusicProperties.Artist = playList[Convert.ToInt32(_mediaPlaybackList.CurrentItemIndex)].artist;
            updater.MusicProperties.Title  = playList[Convert.ToInt32(_mediaPlaybackList.CurrentItemIndex)].title;
            updater.Thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri(playList[Convert.ToInt32(_mediaPlaybackList.CurrentItemIndex)].pic));

            updater.Update();

            timelineProperties.StartTime   = TimeSpan.FromSeconds(0);
            timelineProperties.MinSeekTime = TimeSpan.FromSeconds(0);
            timelineProperties.Position    = _mediaPlayer.PlaybackSession.Position;
            timelineProperties.MaxSeekTime = _mediaPlayer.PlaybackSession.NaturalDuration;
            timelineProperties.EndTime     = _mediaPlayer.PlaybackSession.NaturalDuration;

            // Update the System Media transport Controls
            _systemMediaTransportControls.UpdateTimelineProperties(timelineProperties);
        }
Пример #9
0
        // </SnippetSystemMediaTransportControlsButtonPressed>
        // <SnippetSystemMediaTransportControlsUpdater>
        async void MediaElement_MediaOpened(object sender, RoutedEventArgs e)
        {
            // Get the updater.
            SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;

            await updater.CopyFromFileAsync(MediaPlaybackType.Music, currentMediaFile);

            // Update the system media transport controls
            updater.Update();
        }
Пример #10
0
        public void Initialize(MediaPlayer playerInstance = null)
        {
            pI          = (playerInstance != null) ? playerInstance : new MediaPlayer();
            pI.AutoPlay = true;
            repeatState  rState = repeatState.noRepeat;
            shuffleState sState = shuffleState.noShuffle;

            //pI.Source = testSong;
            currItemUpdater     = pI.SystemMediaTransportControls.DisplayUpdater;
            playlistItemUpdater = pI.SystemMediaTransportControls.DisplayUpdater;
        }
Пример #11
0
        async void UpdateUpdater(StorageFile file, SystemMediaTransportControlsDisplayUpdater updater, string[] updaterfileinfo)
        {
            try {
                await updater.CopyFromFileAsync(MediaPlaybackType.Music, file);

                updater.Update();
                updaterfileinfo[0] = file.DisplayName;
                updaterfileinfo[1] = file.Path;
            }
            catch (Exception e) { Debug.WriteLine(e.Message); requestedGetPlaybackInfo = true; }
        }
Пример #12
0
 public async Task ClearMediaTransportControls()
 {
     await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () =>
     {
         if (_systemMediaTransportControls == null)
         {
             return;
         }
         LogHelper.Log("PLAYVIDEO: Updating SystemMediaTransportControls");
         SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;
         updater.ClearAll();
     });
 }
Пример #13
0
        public MusicManager(List <Song> allSongs, MainPage mp, List <string> musicFolders,
                            List <Playlist> playlists = null,
                            int currentList           = 0, string sort = "date", bool ascending = false, int songIndex = 0, long startTime = 0,
                            bool shuffle = false, bool repeat          = true, int volume       = 100)
        {
            MusicFolders = musicFolders;
            if (playlists == null)
            {
                allSongs  = SortList(allSongs, "date", false);
                Playlists = new List <Playlist>();
                Playlists.Add(new Playlist("All", allSongs));
            }
            else
            {
                Playlists = playlists;
            }
            CurrentList = currentList;
            NowPlaying  = songIndex;
            StartTime   = new TimeSpan(startTime);
            firstLoad   = true;
            SortBy      = sort;
            Ascending   = ascending;

            timeout = null;

            mainPage      = mp;
            localStorage  = mp.localStorage;
            updater       = mp.controls.DisplayUpdater;
            updater.Type  = MediaPlaybackType.Music;
            dispatcher    = CoreWindow.GetForCurrentThread().Dispatcher;
            media         = mp.media;
            seekBar       = mp.seekBar;
            songsListView = mp.songsList;

            SetVolume(volume);

            Repeat  = repeat;
            Shuffle = shuffle;
            if (!Repeat)
            {
                mp.repeatButton.Opacity = 0.5;
            }
            if (Shuffle)
            {
                mp.shuffleButton.Opacity = 1;
            }

            StartTimer();
            Initialize();
        }
Пример #14
0
        private void UpdateSystemMediaTransportControl()
        {
            SystemMediaTransportControlsDisplayUpdater du = smtc.DisplayUpdater;

            if (du.Type != MediaPlaybackType.Music)
            {
                du.Type = MediaPlaybackType.Music;
            }
            if (du.MusicProperties.Title != CurrentSong.Title || du.MusicProperties.Artist != CurrentSong.Artist)
            {
                du.MusicProperties.Title  = CurrentSong.Title;
                du.MusicProperties.Artist = CurrentSong.Artist;
                du.Update();
            }
        }
Пример #15
0
        // </SnippetSystemMediaTransportControlsButtonPressed>
        // </SnippetSystemMediaTransportControlsBackgroundAll>

        // <SnippetSystemMediaTransportControlsUpdater>
        async private void UpdateSongInfo()
        {
            // Get the updater.
            SystemMediaTransportControlsDisplayUpdater updater = systemControls.DisplayUpdater;

            // Get the music file and pass it to CopyFromFileAsync to extract the metadata
            // and thumbnail. StorageFile is defined in Windows.Storage
            StorageFile musicFile =
                await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Music/music1.mp3"));

            await updater.CopyFromFileAsync(MediaPlaybackType.Music, musicFile);

            // Update the system media transport controls
            updater.Update();
        }
Пример #16
0
        // </SnippetSystemMediaTransportControlsUpdater>
        // <SnippetSystemMediaTransportControlsUpdaterManual>
        /// <summary>
        /// Shows how to update the media metadata and thumbnail manually.
        /// Normally you would probably retreive this info from a source such as a database
        /// but for this simple sample we'll just set the metadata with strings.
        /// </summary>
        void UpdateSongInfoManually()
        {
            // Get the updater.
            SystemMediaTransportControlsDisplayUpdater updater = systemControls.DisplayUpdater;

            // Music metadata.
            updater.MusicProperties.AlbumArtist = "artist";
            updater.MusicProperties.AlbumArtist = "album artist";
            updater.MusicProperties.Title       = "song title";

            // Set the album art thumbnail.
            // RandomAccessStreamReference is defined in Windows.Storage.Streams
            updater.Thumbnail =
                RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Music/music1_AlbumArt.jpg"));

            // Update the system media transport controls.
            updater.Update();
        }
Пример #17
0
        private void MediaElement_MediaOpened(object sender, RoutedEventArgs e)
        {
            ((MediaElement)sender).Position = m_Position;
            Episode episode = NowPlaying;

            if (episode != null)
            {
                SystemMediaTransportControlsDisplayUpdater updater = SystemMediaTransportControls.DisplayUpdater;
                updater.Type = MediaPlaybackType.Music;
                if (episode.Title != null)
                {
                    updater.MusicProperties.Title = episode.Title;
                }
                updater.Update();
                SystemMediaTransportControls.IsNextEnabled     = true;
                SystemMediaTransportControls.IsPreviousEnabled = true;
            }
        }
Пример #18
0
 /// <summary>
 /// 播放
 /// </summary>
 void Play()
 {
     if (isRunning)
     {
         currentPlayer.Play();
         if (isFirstPlaying)
         {
             // 更新系統多媒體控制界面的顯示內容
             SystemMediaTransportControlsDisplayUpdater displayUpdater = mdcontrol.DisplayUpdater;
             // 顯示型態為音樂
             displayUpdater.Type = MediaPlaybackType.Music;
             // 設定顯示的字段值
             displayUpdater.MusicProperties.Artist = "戴嬈";
             displayUpdater.MusicProperties.Title  = "我愛我家";
             // 更新顯示
             displayUpdater.Update();
         }
     }
 }
Пример #19
0
        public void Initialize()
        {
#pragma warning disable CS0618
            player = BackgroundMediaPlayer.Current.SystemMediaTransportControls;
#pragma warning restore CS0618
            player.ButtonPressed += Player_ButtonPressed;
            updater = player.DisplayUpdater;

            player.IsPlayEnabled     = true;
            player.IsPauseEnabled    = true;
            player.IsStopEnabled     = true;
            player.IsPreviousEnabled = true;
            player.IsNextEnabled     = true;

            Winamp.StatusChanged += Winamp_StatusChanged;
            Winamp.SongChanged   += Winamp_SongChanged;

            SetSong(Winamp.CurrentSong);
        }
Пример #20
0
        private void GetSong(Song song)
        {
            // 设置播放歌曲信息
            SongName   = song.OriginName;
            VocalName  = song.VocalName;
            SongImage  = song.assestLink.CoverImg;
            SongId     = song.Id;
            songObject = song;
            // 启用 Button 们
            systemMediaTransportControls.IsEnabled         = true;
            systemMediaTransportControls.IsPlayEnabled     = true;
            systemMediaTransportControls.IsPauseEnabled    = true;
            systemMediaTransportControls.IsPreviousEnabled = true;
            systemMediaTransportControls.IsNextEnabled     = true;
            systemMediaTransportControls.IsPauseEnabled    = true;
            // 获取更新对象
            SystemMediaTransportControlsDisplayUpdater updater = systemMediaTransportControls.DisplayUpdater;

            // 设置媒体信息
            updater.Type = MediaPlaybackType.Music;
            updater.MusicProperties.Artist      = song.VocalName;
            updater.MusicProperties.AlbumArtist = song.VocalName;
            updater.MusicProperties.Title       = song.OriginName;
            // 设置图片
            updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(song.assestLink.CoverImg));
            // 更新
            updater.Update();
            // Log
            Log.WriteLine("[Player]载入歌曲 Id: " + song.Id, Level.Info);

            // 载入媒体
            LoadComplete = false;
            var mediaSource = MediaSource.CreateFromUri(new Uri(song.assestLink.Music));

            mediaSource.OpenOperationCompleted += MediaSource_OpenOperationCompleted;
            player.Source = mediaSource;
            Log.WriteLine("[Player]设置播放源为: " + song.assestLink.Music, Level.Info);
            // 触发缓冲进度修改和歌曲改变事件
            SongChanged(this, null);
            BufferingProgressChanged(mediaPlayBackSession, null);
        }
Пример #21
0
        private void PluginStartUp()
        {
            // set up media player to get manual control of SystemMediaTransportControls
            mediaPlayer = new MediaPlayer();
            mediaPlayer.CommandManager.IsEnabled = false;

            // set up SystemMediaTransportControls
            systemMediaControls = mediaPlayer.SystemMediaTransportControls;
            // set flags
            systemMediaControls.PlaybackStatus       = MediaPlaybackStatus.Closed; // nothing in list to play
            systemMediaControls.IsEnabled            = true;                       // show it
            systemMediaControls.IsPlayEnabled        = true;
            systemMediaControls.IsPauseEnabled       = true;
            systemMediaControls.IsStopEnabled        = true;
            systemMediaControls.IsPreviousEnabled    = true;
            systemMediaControls.IsNextEnabled        = true;
            systemMediaControls.IsRewindEnabled      = true;
            systemMediaControls.IsFastForwardEnabled = false;

            // Sync musicbee volume with Windows volume
            //mbApiInterface.Player_SetVolume() = systemMediaControls.SoundLevel

            systemMediaControls.ButtonPressed += systemMediaControls_ButtonPressed;
            systemMediaControls.PlaybackPositionChangeRequested +=
                systemMediaControls_PlaybackPositionChangeRequested;
            systemMediaControls.PlaybackRateChangeRequested   += systemMediaControls_PlaybackRateChangeRequested;
            systemMediaControls.ShuffleEnabledChangeRequested +=
                systemMediaControls_ShuffleEnabledChangeRequested;
            systemMediaControls.AutoRepeatModeChangeRequested +=
                systemMediaControls_AutoRepeatModeChangeRequested;

            // setup overlay properties
            displayUpdater            = systemMediaControls.DisplayUpdater;
            displayUpdater.Type       = MediaPlaybackType.Music; // media type
            displayUpdater.AppMediaId = "MusicBee";              // program name
            // setup for display music properties on overlay
            musicProperties = displayUpdater.MusicProperties;
            SetDisplayValues();
        }
        public async Task SetMediaTransportControlsInfo(string artistName, string albumName, string trackName, string albumUri)
        {
            await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () =>
            {
                try
                {
                    if (_systemMediaTransportControls == null)
                    {
                        return;
                    }
                    _systemMediaTransportControls.PlaybackStatus = MediaPlaybackStatus.Playing;
                    _systemMediaTransportControls.IsEnabled      = true;
                    _systemMediaTransportControls.IsPauseEnabled = true;
                    _systemMediaTransportControls.IsPlayEnabled  = true;

                    SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;
                    updater.Type = MediaPlaybackType.Music;
                    // Music metadata.
                    updater.MusicProperties.AlbumArtist = artistName;
                    updater.MusicProperties.Artist      = artistName;
                    updater.MusicProperties.Title       = trackName;

                    // Set the album art thumbnail.
                    // RandomAccessStreamReference is defined in Windows.Storage.Streams

                    if (albumUri != null && !string.IsNullOrEmpty(albumUri))
                    {
                        updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(albumUri));
                    }

                    // Update the system media transport controls.
                    updater.Update();
                }
                catch (Exception exception)
                { }
            });
        }
Пример #23
0
        public async void RefreshGUI(string Title, string Artist, BitmapImage Cover, bool isMusic, StorageFile file)
        {
            mediaPlayer.Position = TimeSpan.FromSeconds(0);
            if (isMusic)
            {
                TitleHolder.Text       = Title;
                ArtistHolder.Text      = Artist;
                CoverHolder.Source     = Cover;
                BGImage.ImageSource    = Cover;
                mediaPlayer.Visibility = Visibility.Collapsed;

                SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;

                await updater.CopyFromFileAsync(MediaPlaybackType.Music, file);

                // Update the system media transport controls
                updater.Update();
            }
            else
            {
                TitleHolder.Text       = "";
                ArtistHolder.Text      = "";
                CoverHolder.Source     = null;
                BGImage.ImageSource    = null;
                mediaPlayer.Visibility = Visibility.Visible;

                SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;

                await updater.CopyFromFileAsync(MediaPlaybackType.Video, file);

                updater.VideoProperties.Title = Title;

                // Update the system media transport controls
                updater.Update();
            }
        }
Пример #24
0
        private void MediaPlaybackList_CurrentItemChanged(MediaPlaybackList sender, CurrentMediaPlaybackItemChangedEventArgs args)
        {
            if (mediaPlaybackList.Items.Count == 0)
            {
                return;
            }
            if (args.NewItem == null)
            {
                playInfo = null;

                loading = true;
                return;
            }
            if (musicPlayMode == MusicPlayMode.Single)
            {
                SetMusicPlayMode(false);
            }


            //重置播放信息
            bufferingProgress  = 0;
            this.totalDuration = 0;
            this.position      = 0;
            this.durationStr   = "00:00 / 00:00";
            var songid = (int)args.NewItem.Source.CustomProperties["id"];

            playInfo = playList.FirstOrDefault(x => x.songid == songid);
            //SettingHelper.StorageHelper.Save<PlayModel>("playInfo", playInfo);
            //显示试听信息
            if (playInfo.is_preview)
            {
                DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    Utils.ShowMessageToast("试听中,会员可以听完整哦", new List <MyUICommand> {
                        new MyUICommand(UserHelper.isLogin?"开通会员":"登录", async(toast, command) => {
                            if (UserHelper.isLogin)
                            {
                                await Windows.System.Launcher.LaunchUriAsync(new Uri("https://account.bilibili.com/account/big"));
                            }
                            else
                            {
                                await Utils.ShowLoginDialog();
                            }
                        }),
                        new MyUICommand("关闭", (toast, command) => {
                            (toast as MessageToast).Close();
                        }),
                    });
                });
            }


            foreach (var item in playList)
            {
                DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    item.select = false;
                    item.color  = (SolidColorBrush)App.Current.Resources["COLOR_Foreground"];
                });
            }
            DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                playInfo.select = true;
                playInfo.color  = (SolidColorBrush)App.Current.Resources["COLOR_Main"];
            });

            var _systemMediaTransportControls = mediaPlayer.SystemMediaTransportControls;
            SystemMediaTransportControlsDisplayUpdater updater = _systemMediaTransportControls.DisplayUpdater;

            updater.Type = MediaPlaybackType.Music;
            updater.MusicProperties.Artist = playInfo.author;
            updater.MusicProperties.Title  = playInfo.title;
            updater.Thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri(playInfo.pic));
            updater.Update();
            loading = false;
        }