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); }
/// <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; } } }
/// <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); }