예제 #1
0
        public virtual async Task <bool> StartServices()
        {
            bool isGranted = await Mvx.Resolve <IPermissionsService>().CheckPermissionsAccesGrantedAsync();

            if (!IsBound && isGranted)
            {
                Log.LogMessage(string.Format("FACADE HAS STARTED AT {0}", DateTime.Now));
                Debug.WriteLine("Inside tracking service");

                _textToSpeech.IsEnabled = true;
                _activity.StartDetection();
                _geoWatcher.StartGeolocationWatcher();
                Insights.Track("Subscribed on LocationMessage.");
                _locationToken = _messenger.SubscribeOnThreadPoolThread <LocationMessage>(async x =>
                {
                    Log.LogMessage("Start processing LocationMessage");
                    await CheckTrackStatus();
                });
                _tokens.Add(_locationToken);

                Log.LogMessage("Start Facade location detection and subscride on LocationMessage");
                return(true);
            }

            return(false);
        }
 void TimerElapsed(object state)
 {
     if (_motionActivity.MotionType != MotionType.Still)
     {
         Log.LogMessage($"StartGeolocationWatcher from BatteryDrainService after {state} m of sleeping");
         _geoWatcher.StartGeolocationWatcher();
     }
     else
     {
         Log.LogMessage($"StartGeolocationWatcher was not started because we are still after {state} m of sleeping");
     }
     DisposeTimer();
 }