Example #1
0
        public MusicListBoxControl(OfflineTrack audio)
        {
            InitializeComponent();
            Track = audio;
            if (!Track.IsCached & !StaticFunctions.CheckForInternetConnection())
            {
                Play.IsEnabled = false;
            }
            TRACK_NAME.Text   = Track.Title;
            TRACK_AUTHOR.Text = Track.Artist;
            if (Track.IsHq ?? false)
            {
                IsHQ.Visibility = Visibility.Hidden;
            }
            var trackDuration = Track.Duration % 60 < 10 ? $"{Track.Duration / 60}:0{Track.Duration % 60}" : $"{Track.Duration / 60}:{Track.Duration % 60}";

            TRACK_DURATION.Text = trackDuration;
        }
Example #2
0
 public async Task UpdateAudioList() //метод обновления бд с записями
 {
     await Task.Run(async() =>       //Для того, чтобы не задерживать обновление экрана, задача запускается в таске.
     {
         await using var db = new TrackDbContext();
         if (StaticFunctions.CheckForInternetConnection()) //в случае отсутствия интернет-соединения база данных не обновляется
         {
             var tracks = await Api.Audio.GetAsync(new AudioGetParams
             {
                 OwnerId = Api.Users.Get(new List <long>()).FirstOrDefault()?.Id, //так как мы можем войти через токен VkApi.token может не содержать userid, это обход
             });
             foreach (var track in db.Tracks)
             {
                 db.Tracks.Remove(track); //очищаем бд перед записью, записываем и созраняем
             }
             await db.Tracks.AddRangeAsync(OfflineTrack.ToOffline(tracks).ToList());
             await db.SaveChangesAsync();
         }
     });
 }
Example #3
0
        public async Task PlayMusic(OfflineTrack track)
        {
            await Task.Run(() =>
            {
                Debug.WriteLine($"Starting {track.Title}--{track.Id}");
                _waveOut?.Stop();
                if (track.IsCached)
                {
                    Debug.WriteLine("Track already exists");
                    try
                    {
                        var reader = new Mp3FileReader(track.Cache(Api));
                        _waveOut   = new WaveOutEvent();
                        _waveOut.Init(reader);
                        _waveOut.Play();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"{track.Title} cannot be loaded");
                        Debug.WriteLine($"{ex.Message}");
                        Debug.WriteLine($"{ex.StackTrace}");
                        return; //TODO: обработчик исключений
                    }
                }
                else if (StaticFunctions.CheckForInternetConnection())
                {
                    var reader = new Mp3FileReader(track.Cache(Api));
                    _waveOut   = new WaveOutEvent();
                    _waveOut.Init(reader);
                    _waveOut.Play();
                }
            });

            Debug.WriteLine("Starting timer");
            CurrentTrack             = track;
            _nextTrackTimer.Interval = track.Duration * 1000 + 1;
            _nextTrackTimer.Start();
            Debug.WriteLine("Timer started");
        }