public static void BroadcastTrackIfNeeded(BackgroundAudioPlayer player, List <AudioObj> playlist = null, PlaybackSettings settings = null, bool allowCache = false, bool bypassChecks = false) { try { if (!bypassChecks && (player.PlayerState != Microsoft.Phone.BackgroundAudio.PlayState.Playing || (DateTime.Now - AudioTrackHelper._lastTimeBroadcastAttempt).TotalSeconds < 3.0)) { return; } AudioTrackHelper._lastTimeBroadcastAttempt = DateTime.Now; if (settings == null) { settings = PlaylistManager.ReadPlaybackSettings(allowCache); if (!settings.Broadcast) { return; } } AudioTrack track = player.Track; if (track == null || track.GetTagId() == null) { return; } AudioTrackHelper.EnsureAppGlobalStateInitialized(); AudioService.Instance.StatusSet("", track.GetTagId(), (Action <BackendResult <long, ResultCode> >)(res => {})); } catch (Exception ex) { Logger.Instance.Error("Broadcast track failed", ex); } }
public static void RefetchTrack(AudioTrack track, Action <AudioTrack> callback) { if (track != null && track.Source != null) { Uri currentSource = track.Source; AudioTrackHelper.EnsureAppGlobalStateInitialized(); AudioService instance = AudioService.Instance; List <string> ids = new List <string>(); ids.Add(track.GetTagId()); Action <BackendResult <List <AudioObj>, ResultCode> > callback1 = (Action <BackendResult <List <AudioObj>, ResultCode> >)(res => { if (res.ResultCode == ResultCode.Succeeded && res.ResultData != null && (res.ResultData.Count > 0 && currentSource.OriginalString != res.ResultData[0].url)) { callback(AudioTrackHelper.CreateTrack(res.ResultData[0])); } else { callback(null); } }); instance.GetAudio(ids, callback1); } else { callback(null); } }
private void RefetchTrack(AudioTrack track, Action <AudioTrack> callback) { if (track != null && track.Source != null) { Uri currentSource = track.Source; AudioService instance = AudioService.Instance; List <string> ids = new List <string>(); ids.Add(track.GetTagId()); Action <BackendResult <List <AudioObj>, ResultCode> > callback1 = (Action <BackendResult <List <AudioObj>, ResultCode> >)(res => { if (res.ResultCode == ResultCode.Succeeded && res.ResultData != null && (res.ResultData.Count > 0 && currentSource.OriginalString != res.ResultData[0].url)) { Execute.ExecuteOnUIThread((Action)(() => callback(AudioTrackHelper.CreateTrack(res.ResultData[0])))); } else { //Action closure_0 = null; Execute.ExecuteOnUIThread(/*closure_0 ??*/ (/*closure_0 =*/ (Action)(() => callback(null)))); } }); instance.GetAudio(ids, callback1); } else { callback(null); } }
public void Handle(AudioTrackEdited message) { AudioObj fromBackgroundAudio = this.GetCurrentTrackFromBackgroundAudio(); if (fromBackgroundAudio != null && message.OwnerId == fromBackgroundAudio.owner_id && message.Id == fromBackgroundAudio.id) { fromBackgroundAudio.artist = message.Artist; fromBackgroundAudio.title = message.Title; } AudioTrack track = BGAudioPlayerWrapper.Instance.Track; long? nullable1 = track != null ? new long?(track.GetTagOwnerId()) : new long?(); string str = track != null?track.GetTagId() : null; if (str != null && ((IEnumerable <char>)str).Contains <char>('_')) { str = str.Substring(str.IndexOf('_') + 1); } if (track != null) { long?nullable2 = nullable1; long valueOrDefault = nullable2.GetValueOrDefault(); if ((message.OwnerId == valueOrDefault ? (nullable2.HasValue ? 1 : 0) : 0) != 0 && message.Id.ToString() == str) { track.BeginEdit(); track.Artist = message.Artist; track.Title = message.Title; track.EndEdit(); } } this.NotifyPropertyChanged <string>((Expression <Func <string> >)(() => this.ArtistName)); this.NotifyPropertyChanged <string>((Expression <Func <string> >)(() => this.TrackName)); this.NotifyPropertyChanged <string>((Expression <Func <string> >)(() => this.CurrentTrackStr)); }
private void FetchArtwork() { AudioTrack track1 = BGAudioPlayerWrapper.Instance.Track; if (track1 == null) { return; } string tag = track1.GetTagId(); if (this._fetchingArtworkForTrackid == tag) { return; } this._fetchingArtworkForTrackid = tag; AudioService.Instance.GetAlbumArtwork(track1.Artist + " " + track1.Title, (Action <BackendResult <AlbumArtwork, ResultCode> >)(res => { this._fetchingArtworkForTrackid = ""; if (res.ResultCode != ResultCode.Succeeded) { return; } Execute.ExecuteOnUIThread((Action)(() => { AudioTrack track2 = BGAudioPlayerWrapper.Instance.Track; if (track2 == null || !(track2.GetTagId() == tag)) { return; } this._trackIdOfArtwork = tag; this._artwork = res.ResultData.ImageUri; this.NotifyPropertyChanged <string>((Expression <Func <string> >)(() => this.Artwork)); })); })); }
public static long GetTagOwnerId(this AudioTrack track) { return(long.Parse(track.GetTagId().Split('_')[0])); }
private static bool AreDifferentTracks(AudioTrack track, AudioTrack previousTrack) { return((track != null || previousTrack != null) && (track != null && previousTrack == null || track == null && previousTrack != null || !(track.GetTagId() == previousTrack.GetTagId()))); }
public static AudioObj GetNextAudio(BackgroundAudioPlayer player, bool next, out bool startedNewCycle, PlaybackSettings settings = null, bool allowCache = false) { startedNewCycle = false; Playlist playlist = PlaylistManager.LoadTracksFromIsolatedStorage(allowCache); List <AudioObj> tracks = playlist.Tracks; if (tracks.Count == 1) { startedNewCycle = true; } if (settings == null) { settings = PlaylistManager.ReadPlaybackSettings(allowCache); } tracks.FirstOrDefault <AudioObj>(); int num1 = 0; AudioTrack track = player.Track; if (track != null) { AudioObj audioObj = tracks.FirstOrDefault <AudioObj>((Func <AudioObj, bool>)(t => t.UniqueId == track.GetTagId())); num1 = tracks.IndexOf(audioObj); if (settings.Shuffle) { num1 = playlist.ShuffledIndexes.IndexOf(num1); } } int num2 = num1; int index = !next ? num2 - 1 : num2 + 1; if (index < 0) { startedNewCycle = true; index = tracks.Count <AudioObj>() - 1; } if (index >= tracks.Count) { startedNewCycle = true; index = 0; } if (tracks.Count <= 0 || index >= tracks.Count) { return(null); } if (settings.Shuffle) { index = playlist.ShuffledIndexes[index]; } return(tracks[index]); }
private AudioObj GetCurrentTrackFromBackgroundAudio() { if (this._current != null) { return(this._current); } List <AudioObj> tracks = PlaylistManager.LoadTracksFromIsolatedStorage(true).Tracks; AudioTrack bTrack = BGAudioPlayerWrapper.Instance.Track; if (bTrack == null) { return((AudioObj)null); } return(tracks.FirstOrDefault <AudioObj>((Func <AudioObj, bool>)(t => t.UniqueId == bTrack.GetTagId()))); }
public void AddTrack() { if (this._addingTrack) { return; } this._addingTrack = true; this.NotifyPropertyChanged <double>((Expression <Func <double> >)(() => this.CanAddOpacity)); try { List <AudioObj> tracks = PlaylistManager.LoadTracksFromIsolatedStorage(true).Tracks; AudioTrack bTrack = BGAudioPlayerWrapper.Instance.Track; if (bTrack == null) { return; } AudioObj current = tracks.FirstOrDefault <AudioObj>((Func <AudioObj, bool>)(t => t.UniqueId == bTrack.GetTagId())); this.SetInProgress(true, ""); AudioService.Instance.AddAudio(current.owner_id, current.aid, (Action <BackendResult <long, ResultCode> >)(res => { this.SetInProgress(false, ""); this._addingTrack = false; this.NotifyPropertyChanged <double>((Expression <Func <double> >)(() => this.CanAddOpacity)); if (res.ResultCode != ResultCode.Succeeded) { return; } AudioPlayerViewModel._addedTracks.Add(current.UniqueId); AudioObj audioObj = StreamUtils.CloneThroughSerialize <AudioObj>(current); audioObj.owner_id = AppGlobalStateManager.Current.LoggedInUserId; audioObj.aid = res.ResultData; this.NotifyPropertyChanged <bool>((Expression <Func <bool> >)(() => this.CanAddTrack)); this.NotifyPropertyChanged <Visibility>((Expression <Func <Visibility> >)(() => this.AddedVisibility)); this.NotifyPropertyChanged <Visibility>((Expression <Func <Visibility> >)(() => this.CanAddVisibility)); EventAggregator.Current.Publish((object)new AudioTrackAddedRemoved() { Added = true, Audio = audioObj }); })); } catch (Exception ex) { Logger.Instance.Error("Failed to add track", ex); } }