private void ChangeTrack(bool next) { if (!IsShuffleEnable) { if (next) { _trackIndex = _trackIndex + 1; CurrentTrack = TrackModelList[_trackIndex]; SelectedTrack = CurrentTrack; } else { _trackIndex = _trackIndex - 1; CurrentTrack = TrackModelList[_trackIndex]; SelectedTrack = CurrentTrack; } } else { if (next) { var random = new Random(); var randomDigit = random.Next(0, TrackModelList.Count - 1); _trackIndex = randomDigit; PreviousTrack = CurrentTrack; CurrentTrack = TrackModelList[_trackIndex]; } else { var random = new Random(); var randomDigit = random.Next(0, TrackModelList.Count - 1); if (PreviousTrack == null) { _trackIndex = randomDigit; CurrentTrack = TrackModelList[_trackIndex]; PreviousTrack = TrackModelList[random.Next(0, TrackModelList.Count - 1)]; } else { CurrentTrack = PreviousTrack; _trackIndex = randomDigit; PreviousTrack = TrackModelList[_trackIndex]; } } } MyMediaElement.Stop(); _timer.Stop(); MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative)); Position = 0; Thread.Sleep(100); StartTime = "0:00"; IsPlay = true; ChangePlayState(true); }
private void PlayTrack(object o) { var track = o as TrackListModel; CurrentTrack = track; _trackIndex = TrackModelList.IndexOf(track); MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative)); MyMediaElement.Stop(); Position = 0; Thread.Sleep(100); StartTime = "0:00"; IsPlay = true; ChangePlayState(true); }
public PlayerViewModel() { TrackModelList = new ObservableCollection <TrackListModel>(); InitializeTrackList(); _timer.Interval = TimeSpan.FromMilliseconds(1000); _timer.Tick += TimerPosition; CurrentTrack = TrackModelList.First(); SelectedTrack = CurrentTrack; _trackIndex = 0; MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative)); MyMediaElement.Stop(); MyMediaElement.MediaOpened += MyMediaElementOnMediaOpened; MyMediaElement.MediaEnded += MyMediaElementOnMediaEnded; MyMediaElement.Volume = Volume; }
private void MyMediaElementOnMediaOpenedPreview(object sender, EventArgs eventArgs) { var duration = $"{MyMediaElement.NaturalDuration.TimeSpan.Minutes}:{GetCorrectSeconds(MyMediaElement.NaturalDuration.TimeSpan.Seconds)}"; var path = MyMediaElement.Source.OriginalString; if (path == TrackModelList.Last().Path) { MyMediaElement.MediaOpened -= MyMediaElementOnMediaOpenedPreview; MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative)); MyMediaElement.Stop(); MyMediaElement.MediaOpened += MyMediaElementOnMediaOpened; MyMediaElement.MediaEnded += MyMediaElementOnMediaEnded; MyMediaElement.Volume = Volume; } TrackModelList.First(x => x.Path == path).Duration = duration; }