示例#1
0
        private MediaState GetCurrentMediaState()
        {
            MediaStateMessage stateMsg = MediaPlayer.Instance.GetMediaState();

            if (string.IsNullOrWhiteSpace(stateMsg.SongId))
            {
                return(null);
            }

            Song   song   = MusicProvider.Instance.GetSong(stateMsg.SongId);
            Album  album  = MusicProvider.Instance.GetAlbum(song.AlbumId);
            Artist artist = MusicProvider.Instance.GetArtist(album.ArtistId);

            return(new MediaState()
            {
                SongId = song.Id,
                SongName = song.Name,
                AlbumId = album.Id,
                AlbumName = album.Name,
                ArtistId = artist.Id,
                ArtistName = artist.Name,
                State = stateMsg.State,
                Volume = stateMsg.Volume,
                Mode = stateMsg.RepeatMode,
                TrackTimespan = stateMsg.TrackTimespan
            });
        }
示例#2
0
 private void GetTrackTimespan(MediaStateMessage stateMessage)
 {
     stateMessage.TrackTimespan = new TrackTimespan
     {
         Duration        = _windowsMediaPlayer.currentMedia?.duration ?? default(double),
         CurrentPosition = _windowsMediaPlayer.controls.currentPosition
     };
 }
示例#3
0
        public void SendMediaState(MediaStateMessage message = null)
        {
            var mediaState = message ?? new MediaStateMessage
            {
                SongId = this.CurrentMedia?.Id,
                State  = (PlayState)(int)_windowsMediaPlayer.playState
            };

            SignalRConnection.Notify(new Message <MediaStateMessage>(mediaState, MessageType.MediaStateMessage));
        }
示例#4
0
        public MediaStateMessage GetMediaState()
        {
            WMPPlayState state        = _windowsMediaPlayer.playState;
            PlayState    mediaState   = (PlayState)(int)state;
            var          stateMessage = new MediaStateMessage
            {
                State  = mediaState,
                SongId = CurrentMedia?.Id,
                Volume = _windowsMediaPlayer.settings.volume
            };

            GetRepeatMode(stateMessage);
            GetTrackTimespan(stateMessage);

            return(stateMessage);
        }
示例#5
0
        private void GetRepeatMode(MediaStateMessage stateMessage)
        {
            bool shuffle = _windowsMediaPlayer.settings.getMode(Constants.Constants.Shuffle),
                 song    = _windowsMediaPlayer.settings.getMode(Constants.Constants.RepeatSong);

            if (shuffle)
            {
                stateMessage.RepeatMode = RepeatMode.Shuffle;
            }
            else if (song)
            {
                stateMessage.RepeatMode = RepeatMode.Song;
            }
            else
            {
                stateMessage.RepeatMode = RepeatMode.Off;
            }
        }
示例#6
0
        public JsonResult GetSongState()
        {
            MediaStateMessage stateMsg = MediaPlayer.Instance.GetMediaState();

            return(Json(stateMsg, JsonRequestBehavior.AllowGet));
        }