Example #1
0
        public static async Task <bool> PreparePlayingRadio()
        {
            SongUrlRoot songUrlRoot = SongService.GetMusicUrl(PlayingRadioId);

            if (songUrlRoot == null)
            {
                return(false);
            }
            PlayingSongUrlRoot = songUrlRoot;
            var playingRadio = PlayingRadioList.FirstOrDefault(p => p.MainSong.Id == PlayingRadioId);

            if (playingRadio == null)//将要播放的电台不在当前播放列表
            {
                PlayingRadioList = new List <RadioSongItem>()
                {
                    PlayingRadio
                };
                playingRadio = PlayingRadio;
            }
            if (PlayedRadioId != null)
            {
                if (PlayingRadioList != PlayedRadioList)//不同一个播放列表需清空列表
                {
                    PlayedRadioId.Clear();
                }
            }
            else
            {
                PlayedRadioId = new List <long>();
            }
            PlayedRadioId.Remove(playingRadio.MainSong.Id);//删除重复的,避免死循环
            PlayedRadioId.Add(playingRadio.MainSong.Id);
            PlayingRadio = playingRadio;


            PlayingAlbumBitmapImage = await FileHelper.DownloadFile(new Uri(PlayingRadio.CoverUrl + "?param=200y200"));

            if (PlayedRadio != null && PlayedRadioList != null)
            {
                PlayedRadioList.FirstOrDefault(p => p.Id == PlayedRadio.Id).MainSong.IsPlaying = false;
            }
            PlayingRadioList.FirstOrDefault(p => p.Id == PlayingRadio.Id).MainSong.IsPlaying = true;
            return(true);
        }
Example #2
0
        /// <summary>
        /// 获取上一次播放的信息
        /// </summary>
        async void GetLastPlayingInfo()
        {
            ChangeImage();
            PlayingService.PlayingAlbumBitmapImage = await FileHelper.ReadLoaclBitmapImage(ConfigService.ImageFilename);

            if (await PlayingService.Load())
            {
                Slider_Volume.Value = PlayingService.Volume * 100;
                if (PlayingService.IsPlayingSong)
                {
                    if (PlayingService.PlayingSong != null)
                    {
                        ChangePlayBar(PlayingService.PlayingSong, PlayingService.PlayingAlbumBitmapImage, PlayingService.PlayingSong.Name, PlayingService.PlayingSong.ar.First().name, PlayingService.PlayingSong.al.name, PlayingService.PlayingSong.dt / 1000, false);
                    }
                }
                else
                {
                    if (PlayingService.PlayingRadio != null)
                    {
                        ChangePlayBar(PlayingService.PlayingAlbumBitmapImage, PlayingService.PlayingRadio.Name, PlayingService.PlayingRadio.Dj.Nickname, PlayingService.PlayingRadio.Name, PlayingService.PlayingRadio.MainSong.Duration / 1000);
                    }
                }
                UpDatePlayOrderStateIcon();
                if (PlayingService.PlayingSongUrlRoot != null)
                {
                    SongUrlRoot songUrlRoot = SongService.GetMusicUrl(PlayingService.PlayingSongUrlRoot.data.First().id);
                    //_mediaSource = await Task.Run(() => MediaSource.CreateFromUri(new Uri(PlayingService.PlayingSongUrlRoot.data.First().url)));
                    _mediaSource = await Task.Run(() => MediaSource.CreateFromUri(new Uri(songUrlRoot.data.First().url)));

                    _mediaSource.OpenOperationCompleted += _mediaSource_OpenOperationCompleted;
                    _mediaSource.StateChanged           += _mediaSource_StateChanged;
                    _mediaPlaybackItem  = new MediaPlaybackItem(_mediaSource);
                    _mediaPlayer.Source = _mediaPlaybackItem;
                }
            }
        }
Example #3
0
        /// <summary>
        /// 开始播放前获取相关信息准备
        /// </summary>
        /// <param name="playingSongId"></param>
        /// <param name="songsItem"></param>
        /// <returns></returns>
        public static async Task <bool> PreparePlayingSong(long playingSongId, SongsItem songsItem = null)
        {
            if (songsItem == null)//需获取实例
            {
                MusicDetailRoot musicDetailRoot = await Task.Run(() => SongService.GetMusicDetail_Get(playingSongId.ToString()));

                if (musicDetailRoot == null || musicDetailRoot.songs == null || musicDetailRoot.songs.Count == 0)
                {
                    return(false);
                }
                songsItem = musicDetailRoot.songs.Last();
                //判断是否为喜欢歌曲
                if (MainPage.favoriteSongsRoot != null)
                {
                    if (MainPage.favoriteSongsRoot.ids.Find(p => p.Equals(songsItem.Id)) != 0)
                    {
                        songsItem.isFavorite = true;
                    }
                }
            }
            SongUrlRoot songUrlRoot = SongService.GetMusicUrl(songsItem.Id);

            if (songUrlRoot == null)
            {
                return(false);
            }
            PlayingSong        = songsItem;
            PlayingSongUrlRoot = songUrlRoot;
            var playingSong = PlayingService.PlayingSongList.FirstOrDefault(p => p.Id == PlayingService.PlayingSong.Id);

            if (playingSong == null)//将要播放的歌曲不在当前播放列表
            {
                PlayingSongList = new List <SongsItem>()
                {
                    PlayingSong
                };
                playingSong = PlayingSong;
            }
            if (PlayedSongId != null)
            {
                if (PlayingSongList != PlayedSongList)//不同一个播放列表需清空列表
                {
                    PlayedSongId.Clear();
                }
            }
            else
            {
                PlayedSongId = new List <long>();
            }
            PlayedSongId.Remove(playingSong.Id);   //删除重复的,避免死循环
            PlayedSongId.Add(playingSong.Id);
            if (PlayingService.PlayedSong != null) //听歌打卡
            {
                PlayingService.PlayDurationStopwatch.Stop();
                await Task.Run(() => SongService.MarkPlayDuration(PlayedSong.Id, PlayedListId, PlayDurationStopwatch.ElapsedMilliseconds / 1000));
            }

            //获取专辑
            PlayingAlbum = await Task.Run(() => AlbumService.GetAlbum(songsItem.al.id));

            if (PlayingAlbum == null)
            {
                return(false);
            }
            PlayingService.PlayingAlbumBitmapImage = await FileHelper.DownloadFile(new Uri(PlayingAlbum.album.picUrl + "?param=200y200"));

            if (PlayedSong != null && PlayedSongList != null)
            {
                PlayedSongList.FirstOrDefault(p => p.Id == PlayedSong.Id).IsPlaying = false;
            }
            PlayingSongList.FirstOrDefault(p => p.Id == PlayingSong.Id).IsPlaying = true;

            return(true);
        }