Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 public void HandleUserLogoutOrAuthorizationFailure()
 {
     this._globalState.ResetForNewUser();
     this.SaveState();
     this.ReceiveNewToken(new AutorizationData());
     AudioTrackHelper.EnsureStopPlayingOnLogout();
     EventAggregator.Current.Publish(new BaseDataChangedEvent());
     EventAggregator.Current.Publish(new UserIsLoggedOutEvent());
 }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 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)));
 }