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); } }
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 void HandleUserLogoutOrAuthorizationFailure() { this._globalState.ResetForNewUser(); this.SaveState(); this.ReceiveNewToken(new AutorizationData()); AudioTrackHelper.EnsureStopPlayingOnLogout(); EventAggregator.Current.Publish(new BaseDataChangedEvent()); EventAggregator.Current.Publish(new UserIsLoggedOutEvent()); }
public static void PlayCurrentTrack(BackgroundAudioPlayer player, Action <bool> resultCallback = null, bool justPlay = false) { bool flag = false; try { player.Volume = 1.0; AudioTrack track = player.Track; if (track != null) { try { player.Play(); } catch (Exception ex) { if (resultCallback == null) { return; } resultCallback(false); return; } if (justPlay) { resultCallback(true); return; } } if (track != null && track.Source != null) { //track.Source; AudioTrackHelper.EnsureAppGlobalStateInitialized(); if (track.Source.OriginalString.StartsWith("http") && track.GetTagOwnerId() == AppGlobalStateManager.Current.LoggedInUserId && AppGlobalStateManager.Current.GlobalState.IsMusicCachingEnabled) { PlayedFilesInfo playedFilesInfo = new PlayedFilesInfo(); playedFilesInfo.Restore(); Uri source = track.Source; string tag = track.Tag; playedFilesInfo.Add(source, tag); } Playlist playlist = PlaylistManager.LoadTracksFromIsolatedStorage(true); AccountService.Instance.StatsTrackEvents(StatsEventsTracker.ConvertToAppEvents((IEnumerable <object>) new List <AudioPlayEvent>() { new AudioPlayEvent() { OwnerAndAudioId = track.Tag, Source = playlist.Metadata.ActionSource } }), (Action <BackendResult <VKClient.Common.Backend.DataObjects.ResponseWithId, ResultCode> >)(result => {})); if (resultCallback == null) { return; } flag = true; resultCallback(true); } else { if (resultCallback == null) { return; } flag = true; resultCallback(true); } } catch (Exception ex) { Logger.Instance.Error("Failed to start playing. ", ex); if (flag || resultCallback == null) { return; } resultCallback(false); } }
public static AudioTrack GetNextTrack(BackgroundAudioPlayer player, bool next, out bool startedNewCycle, PlaybackSettings settings = null, bool allowCache = false) { startedNewCycle = false; return(AudioTrackHelper.CreateTrack(AudioTrackHelper.GetNextAudio(player, next, out startedNewCycle, settings, allowCache))); }