public void SetTrack(QuranAudioTrack request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (MediaPlayerState.Closed == CurrentPlayer.CurrentState) { // Start task StartBackgroundAudioTask(); } MessageService.SendMessageToBackground(new TrackChangedMessage(request)); }
public void SetTrack(QuranAudioTrack request) { //BackgroundAudioPlayer.Instance.Track = new AudioTrack(source, title, artist, album, albumArt, tag, // EnabledPlayerControls.All); throw new NotImplementedException(); }
private void PlayStreaming(QuranAudioTrack request) { QuranApp.NativeProvider.AudioProvider.SetTrack(request); }
private async void AudioProvider_TrackChanged(IAudioProvider sender, QuranAudioTrack request) { await UpdateAudioState(); }
public async Task PlayFromAyah(QuranAyah ayah) { int currentQari = AudioUtils.GetReciterIdByName(SettingsUtils.Get<string>(Constants.PREF_ACTIVE_QARI)); if (currentQari == -1) return; var request = new QuranAudioTrack(currentQari, ayah, FileUtils.ScreenInfo); // if necessary download aya position file await DownloadAyahPositionFile(); QuranApp.NativeProvider.AudioProvider.SetTrack(request); }
/// <summary> /// Create a playback list from the list of songs received from the foreground app. /// </summary> /// <param name="songs"></param> private async Task CreatePlaybackList(QuranAudioTrack newTrack) { BackgroundMediaPlayer.Current.Pause(); // Make a new list if (_playbackList != null) { _playbackList.CurrentItemChanged -= PlaybackListCurrentItemChanged; _playbackList.Items.Clear(); } else { _playbackList = new MediaPlaybackList(); } // Initialize FileUtils await FileUtils.Initialize(newTrack.ScreenInfo); var missingFiles = await AudioUtils.GetMissingFiles(newTrack); // Add playback items to the list QuranAudioTrack nextTrack = newTrack.GetFirstAyah(); var reciter = nextTrack.GetReciter(); while (nextTrack != null) { string fileName = AudioUtils.GetFileName(nextTrack.GetQuranAyah(), reciter); MediaSource source; if (missingFiles.Contains(fileName)) { source = MediaSource.CreateFromUri(new Uri(Path.Combine(reciter.ServerUrl, fileName))); } else { var file = await FileUtils.GetFile(await reciter.GetStorageFolder(), fileName); if (file != null) { source = MediaSource.CreateFromStorageFile(file); //source = MediaSource.CreateFromUri(new Uri(file.Path)); } else { source = MediaSource.CreateFromUri(new Uri(Path.Combine(reciter.ServerUrl, fileName))); } } source.CustomProperties[SurahKey] = nextTrack.Surah; source.CustomProperties[AyahKey] = nextTrack.Ayah; source.CustomProperties[ReciterKey] = nextTrack.ReciterId; source.CustomProperties[QuranTrackKey] = nextTrack.ToString(); source.CustomProperties[TitleKey] = QuranUtils.GetSurahAyahString(nextTrack.Surah, nextTrack.Ayah); _playbackList.Items.Add(new MediaPlaybackItem(source)); nextTrack = nextTrack.GetNextInSurah(); } // Don't auto start BackgroundMediaPlayer.Current.AutoPlay = false; // Assign the list to the player BackgroundMediaPlayer.Current.Source = _playbackList; // Add handler for future playlist item changes _playbackList.CurrentItemChanged += PlaybackListCurrentItemChanged; }
/// <summary> /// Gets track index from playbackList if found. Otherwise -1. /// </summary> /// <param name="newTrack"></param> /// <returns></returns> private int FindTrack(QuranAudioTrack newTrack) { if (_playbackList != null) { return _playbackList.Items.ToList().FindIndex(i => (int)i.Source.CustomProperties[AyahKey] == newTrack.Ayah && (int)i.Source.CustomProperties[SurahKey] == newTrack.Surah && (int)i.Source.CustomProperties[ReciterKey] == newTrack.ReciterId); } return -1; }
private async Task ChangeTrack(QuranAudioTrack newTrack) { _originalTrackRequest = newTrack; int index = FindTrack(newTrack); // If playlist contains track - change track if (index >= 0) { await ChangeTrack((uint)index); } // Otherwise load new playlist and then change track else { await CreatePlaybackList(newTrack); await ChangeTrack(newTrack); } }
public TrackChangedMessage(QuranAudioTrack audioRequest) { this.AudioTrack = audioRequest; }