flutter_background_geolocation icon indicating copy to clipboard operation
flutter_background_geolocation copied to clipboard

Cannot make HeadlessTask work

Open valerianglobekeeper opened this issue 2 years ago • 9 comments

Your Environment

  • Plugin version: 4.9.0

  • Platform: Android

  • OS version: 13

  • Device manufacturer / model: Sony Xperia XQ-BQ72

  • Flutter info (flutter doctor): [✓] Flutter (Channel stable, 3.7.0, on macOS 13.2 22D49 darwin-x64, locale en-GB) [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1) [✓] Xcode - develop for iOS and macOS (Xcode 14.2) [✓] Chrome - develop for the web [✓] Android Studio (version 2022.1) [✓] Connected device (3 available) [✓] HTTP Host Availability

  • Plugin config:

/// Receive events from BackgroundGeolocation in Headless state.
@pragma('vm:entry-point')
void backgroundGeolocationHeadlessTask(bg.HeadlessEvent headlessEvent) async {
  switch (headlessEvent.name) {
    case bg.Event.BOOT:
      bg.State state = await bg.BackgroundGeolocation.state;
      print("📬 didDeviceReboot: ${state.didDeviceReboot}");
      break;
    case bg.Event.TERMINATE:
      try {
        bg.Location location =
        await bg.BackgroundGeolocation.getCurrentPosition(
            samples: 1,
            extras: {
              "event": "terminate",
              "headless": true
            }
        );
        print("[getCurrentPosition] Headless: $location");
      } catch (error) {
        print("[getCurrentPosition] Headless ERROR: $error");
      }

      break;
    case bg.Event.LOCATION:
      bg.Location location = headlessEvent.event;
      print(location);
      break;
    case bg.Event.MOTIONCHANGE:
      bg.Location location = headlessEvent.event;
      print(location);
      break;
    case bg.Event.GEOFENCE:
      bg.GeofenceEvent geofenceEvent = headlessEvent.event;
      print(geofenceEvent);
      break;
    case bg.Event.GEOFENCESCHANGE:
      bg.GeofencesChangeEvent event = headlessEvent.event;
      print(event);
      break;
    case bg.Event.SCHEDULE:
      bg.State state = headlessEvent.event;
      print(state);
      break;
    case bg.Event.ACTIVITYCHANGE:
      bg.ActivityChangeEvent event = headlessEvent.event;
      print(event);
      break;
    case bg.Event.HTTP:
      bg.HttpEvent response = headlessEvent.event;
      print(response);
      break;
    case bg.Event.POWERSAVECHANGE:
      bool enabled = headlessEvent.event;
      print(enabled);
      break;
    case bg.Event.CONNECTIVITYCHANGE:
      bg.ConnectivityChangeEvent event = headlessEvent.event;
      print(event);
      break;
    case bg.Event.ENABLEDCHANGE:
      bool enabled = headlessEvent.event;
      print(enabled);
      break;
    case bg.Event.AUTHORIZATION:
      bg.AuthorizationEvent event = headlessEvent.event;
      print(event);
      bg.BackgroundGeolocation.setConfig(
          bg.Config(url: "${ENV.TRACKER_HOST}/api/locations"));
      break;
  }
}

/// Receive events from BackgroundFetch in Headless state.
@pragma('vm:entry-point')
void backgroundFetchHeadlessTask(HeadlessTask task) async {
  String taskId = task.taskId;

  // Is this a background_fetch timeout event?  If so, simply #finish and bail-out.
  if (task.timeout) {
    BackgroundFetch.finish(taskId);
    return;
  }

  try {
    var location = await bg.BackgroundGeolocation.getCurrentPosition(
        samples: 1,
        extras: {
          "event": "background-fetch",
          "headless": true
        }
    );
    print('[start] success: ${log}');
  } catch(error) {
    print("[location] ERROR: $error");
  }

  BackgroundFetch.finish(taskId);
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  init();
  TransistorAuth.registerErrorHandler();
  bg.BackgroundGeolocation.registerHeadlessTask(
      backgroundGeolocationHeadlessTask);
  BackgroundFetch.registerHeadlessTask(backgroundFetchHeadlessTask);
  _configureBackgroundFetch();
}

void startGeo() async {
  bg.State state = await bg.BackgroundGeolocation.ready(
    bg.Config(
      autoSync: true,
      geofenceModeHighAccuracy: true,
      desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH,
      persistMode: bg.Config.PERSIST_MODE_GEOFENCE,
      distanceFilter: 10.0,
      debug: true,
      logLevel: bg.Config.LOG_LEVEL_VERBOSE,
    ),
  );
  state = await bg.BackgroundGeolocation.startGeofences();
}
void _onGeofence(bg.GeofenceEvent event) async {
  print('[BackgroundFetch] Flutter received onGeofence event $event');
}
void init() async {
  await bg.TransistorAuthorizationToken.destroy(ENV.TRACKER_HOST);

  bg.TransistorAuthorizationToken token =
  await bg.TransistorAuthorizationToken.findOrCreate(
      "****", "***", ENV.TRACKER_HOST).catchError((error) {
  }).then((value) {
    _configureBackgroundGeolocation(value);
  });
}

void _configureBackgroundGeolocation(bg.TransistorAuthorizationToken token) async {
  // 1.  Listen to events (See docs for all 13 available events).
  bg.BackgroundGeolocation.onLocation(_onLocation, _onLocationError);
  bg.BackgroundGeolocation.onMotionChange(_onMotionChange);
  bg.BackgroundGeolocation.onActivityChange(_onActivityChange);
  bg.BackgroundGeolocation.onProviderChange(_onProviderChange);
  bg.BackgroundGeolocation.onHttp(_onHttp);
  bg.BackgroundGeolocation.onConnectivityChange(_onConnectivityChange);
  bg.BackgroundGeolocation.onHeartbeat(_onHeartbeat);
  bg.BackgroundGeolocation.onGeofence(_onGeofence);
  bg.BackgroundGeolocation.onSchedule(_onSchedule);
  // bg.BackgroundGeolocation.onPowerSaveChange(_onPowerSaveChange);
  bg.BackgroundGeolocation.onEnabledChange(_onEnabledChange);
  bg.BackgroundGeolocation.onNotificationAction(_onNotificationAction);

  // 2.  Configure the plugin
  bg.BackgroundGeolocation.ready(bg.Config(
    // reset: false,  // <-- lets the Settings screen drive the config rather than re-applying each boot.
    // Convenience option to automatically configure the SDK to post to Transistor Demo server.
      transistorAuthorizationToken: token,
      // Logging & Debug
      debug: true,
      logLevel: bg.Config.LOG_LEVEL_VERBOSE,
      // Geolocation options
      desiredAccuracy: bg.Config.DESIRED_ACCURACY_NAVIGATION,
      distanceFilter: 10.0,
      // Activity recognition options
      stopTimeout: 5,
      backgroundPermissionRationale: bg.PermissionRationale(
          title: "Allow {applicationName} to access this device's location even when the app is closed or not in use.",
          message: "This app collects location data to enable recording your trips to work and calculate distance-travelled.",
          positiveAction: 'Change to "{backgroundPermissionOptionLabel}"',
          negativeAction: 'Cancel'
      ),
      // HTTP & Persistence
      autoSync: true,
      // Application options
      stopOnTerminate: false,
      startOnBoot: true,
      enableHeadless: true,
      heartbeatInterval: 60
  )).then((bg.State state) async {
      bg.BackgroundGeolocation.startSchedule();

    bg.BackgroundGeolocation.addGeofence(bg.Geofence(
        identifier: "Hi hi",
        radius: 200,
        latitude: 40.990606,
        longitude: 28.649291,
        notifyOnEntry: true,
        notifyOnExit: true,
        notifyOnDwell: true,
        loiteringDelay: 1000,
        extras: {
          'radius': 200,
          'center': {'latitude': 40.990606, 'longitude': 28.649291}
        } // meta-data for tracker.transistorsoft.com
    )).then((bool success) {
      startGeo();
    }).catchError((error) {
      print('[catchError] ERROR: $error');
    });
  }).catchError((error) {
    print('[catchError] ERROR: $error');
  });
}

// Configure BackgroundFetch (not required by BackgroundGeolocation).
void _configureBackgroundFetch() async {
  BackgroundFetch.configure(BackgroundFetchConfig(
      minimumFetchInterval: 15,
      startOnBoot: true,
      stopOnTerminate: false,
      enableHeadless: true,
      requiresStorageNotLow: false,
      requiresBatteryNotLow: false,
      requiresCharging: false,
      requiresDeviceIdle: false,
      requiredNetworkType: NetworkType.NONE
  ), (String taskId) async {

    if (taskId == 'flutter_background_fetch') {
      try {
        // Fetch current position
        var location = await bg.BackgroundGeolocation.getCurrentPosition(
            samples: 1,
            extras: {
              "event": "background-fetch",
              "headless": false
            }
        );
        print("[location] $location");
      } catch(error) {
        print("[location] ERROR: $error");
      }

      // Test scheduling a custom-task in fetch event.
      BackgroundFetch.scheduleTask(TaskConfig(
          taskId: "com.transistorsoft.customtask",
          delay: 5000,
          periodic: false,
          forceAlarmManager: true,
          stopOnTerminate: false,
          enableHeadless: true
      ));
    }
    BackgroundFetch.finish(taskId);
  });
}

void _onLocation(bg.Location location) {
  print('[${bg.Event.LOCATION}] - $location');
}
void _onLocationError(bg.LocationError error) {
  print('[${bg.Event.LOCATION}] ERROR - $error');
}
// --- Gradle app
Project background_geolocation = project(':flutter_background_geolocation')
apply from: "${background_geolocation.projectDir}/background_geolocation.gradle"

android {
    namespace 'com.example.testflutter'
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId "com.example.testflutter"
        minSdk rootProject.ext.compileSdkVersion
        targetSdk rootProject.ext.compileSdkVersion
    }
}

// --- Gradle
allprojects {
    google()
        mavenCentral()
    repositories {
        maven {
            // [required] background_fetch
            url "${project(':background_fetch').projectDir}/libs"
        }
        maven {
            // [required] background_fetch
            url "${project(':flutter_background_geolocation').projectDir}/libs"
        }
    }
}

Expected Behavior

backgroundGeolocationHeadlessTask should have been triggered every time I get location update or any other event I've subscribed to.

Actual Behavior

I only get event updates only in logs and audio notifications. When I get into geofence radius I'm able to see in logs but backgroundGeolocationHeadlessTask is not triggered.

Context

One important thing to mention: I start the plugin from native app, just at the very beginning start of the activity in onCreate

val engine = FlutterEngine(applicationContext) engine.dartExecutor.executeDartEntrypoint( DartExecutor.DartEntrypoint( FlutterInjector.instance().flutterLoader().findAppBundlePath(), "main")) I get into main where start the background geolocation processes like I sent in the code above. It seems the geofence and location updates work but I need the events appear in backgroundGeolocationHeadlessTask I want to send them back to native application.

I assume it's because of add-to-app implementation from native app: https://docs.flutter.dev/development/add-to-app/android/plugin-setup

Can you please assist what is missed? we want to be sure that the plugin will work from the native app before purchasing license

Debug logs

02-09 16:58:13.038  2928  2928 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity execute] locationsettings
02-09 16:58:13.057  2928  2928 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity stop] eventCount: 0
02-09 16:58:13.088  2928  2928 D TSLocationManager: [c.t.l.g.TSGeofenceManager$e run] evaluation buffer timer elapsed
02-09 16:58:13.089  2928  3183 E TSLocationManager: [c.t.l.l.TSLocationManager getLastLocation] 
02-09 16:58:13.089  2928  3183 E TSLocationManager:   ‼️  Failed to get last location: com.google.android.gms.tasks.zzw@cc1f743
02-09 16:58:13.273  2928  2928 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity onDestroy] 
02-09 16:58:13.751  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:13.751  2928  2928 D TSLocationManager:   🎾  LocationRequestService [eventCount: 1]
02-09 16:58:13.753  2928  3183 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 16:58:13.753  2928  3183 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:13.753  2928  3183 I TSLocationManager: ║ motionchange LocationResult: 1
02-09 16:58:13.753  2928  3183 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:13.753  2928  3183 I TSLocationManager: ╟─ 📍  Location[fused 40.990602,28.649672 hAcc=20.293 et=+22h8m6s312ms alt=137.79998779296875 vAcc=1.9483888], age: 583ms, time: 1675951093170
02-09 16:58:13.755  2928  3183 I TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 16:58:13.755  2928  3183 I TSLocationManager:   🔵  Acquired motionchange position, isMoving: false
02-09 16:58:13.756  2928  3183 D TSLocationManager: [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 20.293
02-09 16:58:13.759  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 16:58:13.760  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:13.760  2928  2928 D TSLocationManager:   🔴  LocationRequestService stopped
02-09 16:58:13.764  2928  2928 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] ℹ️  GeofencingClient addGeofences
02-09 16:58:13.765  2928  2928 D TSLocationManager: [c.t.l.g.TSGeofenceManager d] ℹ️  Persist monitored geofences: [Hi hi]
02-09 16:58:13.765  2928  2928 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] 
02-09 16:58:13.765  2928  2928 D TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:13.765  2928  2928 D TSLocationManager: ║ TSGeofenceManager monitoring 1/1
02-09 16:58:13.765  2928  2928 D TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:13.765  2928  2928 D TSLocationManager: ╟─ 🎾  Hi hi
02-09 16:58:13.765  2928  2928 D TSLocationManager: ╚═════════════════════════════════════════════
02-09 16:58:13.790  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:13.790  2928  2928 D TSLocationManager:   🎾  GeofencingService [eventCount: 1]
02-09 16:58:13.791  2928  3181 I TSLocationManager: [c.t.l.s.GeofencingService handleGeofencingEvent] 
02-09 16:58:13.791  2928  3181 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:13.791  2928  3181 I TSLocationManager: ║ Geofencing Event: ENTER
02-09 16:58:13.791  2928  3181 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:13.791  2928  3181 I TSLocationManager: ╟─ Hi hi
02-09 16:58:13.791  2928  3181 I TSLocationManager: ╚═════════════════════════════════════════════
02-09 16:58:13.794  2928  3181 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 592
02-09 16:58:13.802  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:13.802  2928  2928 D TSLocationManager:   🎾  ActivityRecognitionService [eventCount: 1]
02-09 16:58:13.803  2928  3174 D TSLocationManager: [c.t.l.s.ActivityRecognitionService handleActivityRecognitionResult] 
02-09 16:58:13.803  2928  3174 D TSLocationManager:   🚘 ️DetectedActivity [type=STILL, confidence=100]
02-09 16:58:13.804  2928  3174 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish ActivityRecognitionService [eventCount: 0, sticky: false]
02-09 16:58:13.806  2928  3181 I TSLocationManager: [c.t.l.data.sqlite.b persist] 
02-09 16:58:13.806  2928  3181 I TSLocationManager:   ✅  INSERT: ff3927d9-c045-49ed-9376-e8cd669141c9
02-09 16:58:13.809  2928  3181 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 16:58:13.809  2928  3181 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:13.809  2928  3181 I TSLocationManager: ║ HTTP Service (count: 1)
02-09 16:58:13.809  2928  3181 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:13.811  2928  3183 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 1 isFinished? true
02-09 16:58:13.811  2928  3183 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 16:58:13.811  2928  3183 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 16:58:13.813  2928  2928 I TSLocationManager: [c.t.l.s.ActivityRecognitionService start] 
02-09 16:58:13.813  2928  2928 I TSLocationManager:   🎾  Start motion-activity updates
02-09 16:58:13.819  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:13.819  2928  2928 D TSLocationManager:   🎾  BackgroundTaskService [eventCount: 1]
02-09 16:58:13.819  2928  2928 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task start] ⏳ startBackgroundTask: 1
02-09 16:58:13.820  2928  3181 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish GeofencingService [eventCount: 0, sticky: false]
02-09 16:58:13.822  2928  3183 D TSLocationManager: [c.t.l.data.sqlite.b first] 
02-09 16:58:13.822  2928  3183 D TSLocationManager:   ✅  Locked 1 records
02-09 16:58:13.822  2928  3183 I TSLocationManager: [c.t.l.http.HttpService a] 
02-09 16:58:13.822  2928  3183 I TSLocationManager:   🔵  HTTP POST: ff3927d9-c045-49ed-9376-e8cd669141c9
02-09 16:58:13.861  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:13.861  2928  2928 D TSLocationManager:   🎾  ActivityRecognitionService [eventCount: 1]
02-09 16:58:13.861  2928  3183 D TSLocationManager: [c.t.l.s.ActivityRecognitionService handleActivityRecognitionResult] 
02-09 16:58:13.861  2928  3183 D TSLocationManager:   🚘 ️DetectedActivity [type=STILL, confidence=100]
02-09 16:58:13.862  2928  3183 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish ActivityRecognitionService [eventCount: 0, sticky: false]
02-09 16:58:14.042  2928  3205 I TSLocationManager: [c.t.l.http.HttpService$h onResponse] 
02-09 16:58:14.042  2928  3205 I TSLocationManager:   🔵  Response: 200
02-09 16:58:14.043  2928  3205 D TSLocationManager: [c.t.l.data.sqlite.b destroy] 
02-09 16:58:14.043  2928  3205 D TSLocationManager:   ✅  DESTROY: ff3927d9-c045-49ed-9376-e8cd669141c9
02-09 16:58:14.045  2928  3205 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task stop] ⏳ stopBackgroundTask: 1
02-09 16:58:14.046  2928  3205 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish BackgroundTaskService [eventCount: 0, sticky: false]
02-09 16:58:14.047  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:14.047  2928  2928 D TSLocationManager:   🔴  BackgroundTaskService stopped
02-09 16:58:14.321  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:14.321  2928  2928 D TSLocationManager:   🔴  GeofencingService stopped
02-09 16:58:14.865  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:14.865  2928  2928 D TSLocationManager:   🔴  ActivityRecognitionService stopped
02-09 16:58:18.655  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:18.655  2928  2928 D TSLocationManager:   🎾  GeofencingService [eventCount: 1]
02-09 16:58:18.687  2928  3183 I TSLocationManager: [c.t.l.s.GeofencingService handleGeofencingEvent] 
02-09 16:58:18.687  2928  3183 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:18.687  2928  3183 I TSLocationManager: ║ Geofencing Event: DWELL
02-09 16:58:18.687  2928  3183 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:18.687  2928  3183 I TSLocationManager: ╟─ Hi hi
02-09 16:58:18.687  2928  3183 I TSLocationManager: ╚═════════════════════════════════════════════
02-09 16:58:18.688  2928  3183 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 4962
02-09 16:58:18.698  2928  3183 I TSLocationManager: [c.t.l.data.sqlite.b persist] 
02-09 16:58:18.698  2928  3183 I TSLocationManager:   ✅  INSERT: 08780f21-dcf3-4c0a-a578-abcb226d8279
02-09 16:58:18.699  2928  3183 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 16:58:18.699  2928  3183 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:58:18.699  2928  3183 I TSLocationManager: ║ HTTP Service (count: 1)
02-09 16:58:18.699  2928  3183 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:58:18.707  2928  3183 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish GeofencingService [eventCount: 0, sticky: false]
02-09 16:58:18.707  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 16:58:18.707  2928  2928 D TSLocationManager:   🎾  BackgroundTaskService [eventCount: 1]
02-09 16:58:18.708  2928  2928 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task start] ⏳ startBackgroundTask: 2
02-09 16:58:18.715  2928  3183 D TSLocationManager: [c.t.l.data.sqlite.b first] 
02-09 16:58:18.715  2928  3183 D TSLocationManager:   ✅  Locked 1 records
02-09 16:58:18.716  2928  3183 I TSLocationManager: [c.t.l.http.HttpService a] 
02-09 16:58:18.716  2928  3183 I TSLocationManager:   🔵  HTTP POST: 08780f21-dcf3-4c0a-a578-abcb226d8279
02-09 16:58:18.966  2928  3205 I TSLocationManager: [c.t.l.http.HttpService$h onResponse] 
02-09 16:58:18.966  2928  3205 I TSLocationManager:   🔵  Response: 200
02-09 16:58:18.966  2928  3205 D TSLocationManager: [c.t.l.data.sqlite.b destroy] 
02-09 16:58:18.966  2928  3205 D TSLocationManager:   ✅  DESTROY: 08780f21-dcf3-4c0a-a578-abcb226d8279
02-09 16:58:18.969  2928  3205 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task stop] ⏳ stopBackgroundTask: 2
02-09 16:58:18.969  2928  3205 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish BackgroundTaskService [eventCount: 0, sticky: false]
02-09 16:58:18.970  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:18.970  2928  2928 D TSLocationManager:   🔴  BackgroundTaskService stopped
02-09 16:58:19.210  2928  2928 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 16:58:19.210  2928  2928 D TSLocationManager:   🔴  GeofencingService stopped
02-09 16:59:33.087  4939  4939 E TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:59:33.087  4939  4939 E TSLocationManager: ║ LICENSE VALIDATION FAILURE: com.example.testflutter
02-09 16:59:33.087  4939  4939 E TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:59:33.087  4939  4939 E TSLocationManager: ╟─ Failed to find license key in AndroidManifest.  Ensure you've added the key within <application><meta-data android:name="com.transistorsoft.locationmanager.license" android:value="<YOUR LICENSE KEY>" />
02-09 16:59:33.087  4939  4939 E TSLocationManager: ╟─ BackgroundGeolocation is fully functional in DEBUG builds without a license.
02-09 16:59:33.087  4939  4939 E TSLocationManager: ╚═════════════════════════════════════════════
02-09 16:59:34.453  4939  4939 D TSLocationManager: [c.t.l.adapter.TSConfig d] ℹ️   Persist config, dirty: [authorization, authorization.strategy, authorization.accessToken, authorization.refreshToken, authorization.refreshUrl, authorization.refreshPayload, backgroundPermissionRationale, backgroundPermissionRationale.title, backgroundPermissionRationale.message, backgroundPermissionRationale.negativeAction, debug, desiredAccuracy, enableHeadless, headlessJobService, heartbeatInterval, logLevel, startOnBoot, stopOnTerminate, url]
02-09 16:59:34.460  4939  4939 D TSLocationManager: [c.t.l.data.sqlite.a onCreate] CREATE TABLE IF NOT EXISTS locations (id INTEGER PRIMARY KEY AUTOINCREMENT, uuid TEXT NOT NULL DEFAULT '', timestamp TEXT, json TEXT, data BLOB, encrypted BOOLEAN NOT NULL DEFAULT 0, locked BOOLEAN NOT NULL DEFAULT 0);
02-09 16:59:34.460  4939  4939 D TSLocationManager: [c.t.l.data.sqlite.a onCreate] CREATE TABLE IF NOT EXISTS geofences (id INTEGER PRIMARY KEY AUTOINCREMENT, identifier TEXT NOT NULL UNIQUE, latitude DOUBLE NOT NULL, sin_latitude DOUBLE NOT NULL, cos_latitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL, sin_longitude DOUBLE NOT NULL, cos_longitude DOUBLE NOT NULL, radius DOUBLE NOT NULL, notifyOnEntry BOOLEAN NOT NULL DEFAULT 0, notifyOnExit BOOLEAN NOT NULL DEFAULT 0, notifyOnDwell BOOLEAN NOT NULL DEFAULT 0, loiteringDelay INTEGER NOT NULL DEFAULT 0, extras TEXT);
02-09 16:59:34.462  4939  4939 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 16:59:34.462  4939  4939 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 16:59:34.462  4939  4939 I TSLocationManager: ║ HTTP Service (count: 0)
02-09 16:59:34.462  4939  4939 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 16:59:34.463  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onCreate] ☯️  onCreate
02-09 16:59:34.464  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onStart] ☯️  onStart
02-09 16:59:34.464  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onResume] ☯️  onResume
02-09 16:59:34.466  4939  4939 I TSLocationManager: [c.t.l.a.BackgroundGeolocation <init>] 
02-09 16:59:34.466  4939  4939 I TSLocationManager:   ✅  Google Play Services: connected (version code:12451000)
02-09 16:59:34.475  4939  4939 I TSLocationManager: [c.t.l.p.TSProviderManager startMonitoring] 
02-09 16:59:34.475  4939  4939 I TSLocationManager:   🎾  Start monitoring location-provider changes
02-09 16:59:34.480  4939  5025 D TSLocationManager: [c.t.l.data.sqlite.b prune] 
02-09 16:59:34.480  4939  5025 D TSLocationManager:   ℹ️  PRUNE -1 days
02-09 16:59:34.496  4939  4939 W TSLocationManager: [c.t.l.a.BackgroundGeolocation startSchedule] 
02-09 16:59:34.496  4939  4939 W TSLocationManager:   ⚠️  Cannot startSchedule; schedule is null
02-09 16:59:34.499  4939  4971 I TSLocationManager: [c.t.l.data.sqlite.GeofenceDAO create] 
02-09 16:59:34.499  4939  4971 I TSLocationManager:   ✅  Hi hi
02-09 16:59:34.503  4939  4971 D TSLocationManager: [c.t.l.g.TSGeofenceManager d] ℹ️  Persist monitored geofences: []
02-09 16:59:34.515  4939  4939 W TSLocationManager: [c.t.f.b.BackgroundGeolocationModule ready] 
02-09 16:59:34.515  4939  4939 W TSLocationManager:   ⚠️  #ready already called.  Redirecting to #setConfig
02-09 16:59:34.516  4939  4939 D TSLocationManager: [c.t.l.adapter.TSConfig d] ℹ️   Persist config, dirty: [desiredAccuracy, geofenceModeHighAccuracy, persistMode]
02-09 16:59:34.521  4939  4939 I TSLocationManager: [c.t.locationmanager.util.c g] 
02-09 16:59:34.521  4939  4939 I TSLocationManager:   🔵  LocationAuthorization: Requesting Background permission
02-09 16:59:34.765  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$e run] evaluation buffer timer elapsed
02-09 16:59:35.289  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onPause] ☯️  onPause
02-09 16:59:54.924  4939  4939 I TSLocationManager: [c.t.locationmanager.util.c$j onPermissionGranted] 
02-09 16:59:54.924  4939  4939 I TSLocationManager:   ✅  LocationAuthorization: Permission granted
02-09 16:59:54.937  4939  4939 I TSLocationManager: [c.t.locationmanager.util.c e] 
02-09 16:59:54.937  4939  4939 I TSLocationManager:   🔵  Should show backgroundPermissionRationale? false
02-09 16:59:54.939  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onResume] ☯️  onResume
02-09 16:59:55.692  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onPause] ☯️  onPause
02-09 16:59:55.692  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onStop] ☯️  onStop
02-09 17:00:02.584  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onStart] ☯️  onStart
02-09 17:00:02.625  4939  4939 I TSLocationManager: [c.t.locationmanager.util.c$j onPermissionGranted] 
02-09 17:00:02.625  4939  4939 I TSLocationManager:   ✅  LocationAuthorization: Permission granted
02-09 17:00:02.626  4939  5025 I TSLocationManager: - Enable: false → true, trackingMode: 0
02-09 17:00:02.636  4939  5025 D TSLocationManager: [c.t.l.http.HttpService startMonitoringConnectivityChanges] 
02-09 17:00:02.636  4939  5025 D TSLocationManager:   🎾  Start monitoring connectivity changes
02-09 17:00:02.639  4939  5025 D TSLocationManager: [c.t.l.device.DeviceSettings startMonitoringPowerSaveChanges] 
02-09 17:00:02.639  4939  5025 D TSLocationManager:   🎾  Start monitoring powersave changes
02-09 17:00:02.639  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onResume] ☯️  onResume
02-09 17:00:02.641  4939  5012 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:02.641  4939  5012 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:02.641  4939  5012 I TSLocationManager: ║ HTTP Service (count: 0)
02-09 17:00:02.641  4939  5012 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:02.643  4939  5025 I TSLocationManager: [c.t.l.service.HeartbeatService start] 
02-09 17:00:02.643  4939  5025 I TSLocationManager:   🎾  Start heartbeat (60s)
02-09 17:00:02.649  4939  5025 D TSLocationManager: [c.t.locationmanager.util.c h] 
02-09 17:00:02.649  4939  5025 D TSLocationManager:   ℹ️  LocationAuthorization: Permission granted
02-09 17:00:02.653  4939  5211 I TSLocationManager: [c.t.l.service.HeartbeatService start] 
02-09 17:00:02.653  4939  5211 I TSLocationManager:   🎾  Start heartbeat (60s)
02-09 17:00:02.659  4939  4939 D TSLocationManager: [c.t.l.s.ForegroundNotification createNotificationChannel] NotificationChannel{mId='com.example.testflutterTSLocationManager', mName=TSLocationManager, mDescription=, mImportance=1, mBypassDnd=false, mLockscreenVisibility=-1, mSound=null, mLights=false, mLightColor=0, mVibration=null, mUserLockedFields=0, mFgServiceShown=false, mVibrationEnabled=false, mShowBadge=false, mDeleted=false, mDeletedTimeMs=-1, mGroup='null', mAudioAttributes=null, mBlockableSystem=false, mAllowBubbles=-1, mImportanceLockedDefaultApp=false, mOriginalImp=-1000, mParent=null, mConversationId=null, mDemoted=false, mImportantConvo=false}
02-09 17:00:02.659  4939  5211 D TSLocationManager: [c.t.locationmanager.util.c h] 
02-09 17:00:02.659  4939  5211 D TSLocationManager:   ℹ️  LocationAuthorization: Permission granted
02-09 17:00:02.659  4939  5211 I TSLocationManager: [c.t.l.service.TrackingService changePace] 
02-09 17:00:02.659  4939  5211 I TSLocationManager:   🔵  setPace: false → false
02-09 17:00:02.660  4939  5211 D TSLocationManager: [c.t.locationmanager.util.c h] 
02-09 17:00:02.660  4939  5211 D TSLocationManager:   ℹ️  LocationAuthorization: Permission granted
02-09 17:00:02.661  4939  5211 I TSLocationManager: [c.t.l.p.TSProviderManager handleProviderChangeEvent] 
02-09 17:00:02.661  4939  5211 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:02.661  4939  5211 I TSLocationManager: ║ Location-provider change: true
02-09 17:00:02.661  4939  5211 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:02.661  4939  5211 I TSLocationManager: ╟─ GPS: true
02-09 17:00:02.661  4939  5211 I TSLocationManager: ╟─ Network: true
02-09 17:00:02.661  4939  5211 I TSLocationManager: ╟─ AP Mode: false
02-09 17:00:02.661  4939  5211 D TSLocationManager: [c.t.l.http.HttpService a] 
02-09 17:00:02.661  4939  5211 D TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:02.661  4939  5211 D TSLocationManager: ║ 📶  Connectivity change: connected? true
02-09 17:00:02.661  4939  5211 D TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:02.664  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:02.664  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 1]
02-09 17:00:02.665  4939  5025 I TSLocationManager: [c.t.l.l.SingleLocationRequest startUpdatingLocation] 
02-09 17:00:02.665  4939  5025 I TSLocationManager:   🔵  [SingleLocationRequest start, action: 1, requestId: 1]
02-09 17:00:02.669  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:02.669  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 2]
02-09 17:00:02.670  4939  5012 I TSLocationManager: [c.t.l.l.SingleLocationRequest startUpdatingLocation] 
02-09 17:00:02.670  4939  5012 I TSLocationManager:   🔵  [SingleLocationRequest start, action: 1, requestId: 2]
02-09 17:00:02.671  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:02.671  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 3]
02-09 17:00:02.671  4939  5008 I TSLocationManager: [c.t.l.l.SingleLocationRequest startUpdatingLocation] 
02-09 17:00:02.671  4939  5008 I TSLocationManager:   🔵  [SingleLocationRequest start, action: 3, requestId: 3]
02-09 17:00:02.675  4939  5008 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 2, sticky: true]
02-09 17:00:02.675  4939  5012 I TSLocationManager: [c.t.l.s.ActivityRecognitionService start] 
02-09 17:00:02.675  4939  5012 I TSLocationManager:   🎾  Start motion-activity updates
02-09 17:00:02.676  4939  5025 I TSLocationManager: [c.t.l.s.ActivityRecognitionService start] 
02-09 17:00:02.676  4939  5025 I TSLocationManager:   🎾  Start motion-activity updates
02-09 17:00:02.677  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 1, sticky: true]
02-09 17:00:02.677  4939  5025 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: true]
02-09 17:00:02.850  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity execute] locationsettings
02-09 17:00:02.863  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity stop] eventCount: 0
02-09 17:00:02.888  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity execute] locationsettings
02-09 17:00:02.898  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity onDestroy] 
02-09 17:00:02.911  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity stop] eventCount: 0
02-09 17:00:03.206  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity onDestroy] 
02-09 17:00:03.663  4939  5025 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:03.663  4939  5025 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:03.663  4939  5025 I TSLocationManager: ║ HTTP Service (count: 0)
02-09 17:00:03.663  4939  5025 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:05.078  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onPause] ☯️  onPause
02-09 17:00:05.079  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onStop] ☯️  onStop
02-09 17:00:06.848  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.848  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 1]
02-09 17:00:06.849  4939  5025 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.849  4939  5025 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.849  4939  5025 I TSLocationManager: ║ motionchange LocationResult: 2
02-09 17:00:06.849  4939  5025 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.849  4939  5025 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h9m56s249ms alt=137.79998779296875 vAcc=1.9931581], age: 3742ms, time: 1675951203107
02-09 17:00:06.853  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.853  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 2]
02-09 17:00:06.854  4939  5012 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.854  4939  5012 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.854  4939  5012 I TSLocationManager: ║ providerchange LocationResult: 3
02-09 17:00:06.854  4939  5012 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.854  4939  5012 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h9m56s249ms alt=137.79998779296875 vAcc=1.9931581], age: 3747ms, time: 1675951203107
02-09 17:00:06.855  4939  5025 I TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.855  4939  5025 I TSLocationManager:   🔵  Acquired motionchange position, isMoving: false
02-09 17:00:06.855  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.855  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 3]
02-09 17:00:06.855  4939  5025 D TSLocationManager: [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 24.63
02-09 17:00:06.856  4939  5008 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.856  4939  5008 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.856  4939  5008 I TSLocationManager: ║ motionchange LocationResult: 1
02-09 17:00:06.856  4939  5008 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.856  4939  5008 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h9m56s249ms alt=137.79998779296875 vAcc=1.9931581], age: 3749ms, time: 1675951203107
02-09 17:00:06.862  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.866  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:06.866  4939  4939 D TSLocationManager:   🔴  LocationRequestService stopped
02-09 17:00:06.870  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] ℹ️  GeofencingClient addGeofences
02-09 17:00:06.871  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager d] ℹ️  Persist monitored geofences: [Hi hi]
02-09 17:00:06.873  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] 
02-09 17:00:06.873  4939  4939 D TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.873  4939  4939 D TSLocationManager: ║ TSGeofenceManager monitoring 1/1
02-09 17:00:06.873  4939  4939 D TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.873  4939  4939 D TSLocationManager: ╟─ 🎾  Hi hi
02-09 17:00:06.873  4939  4939 D TSLocationManager: ╚═════════════════════════════════════════════
02-09 17:00:06.894  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.894  4939  4939 D TSLocationManager:   🎾  GeofencingService [eventCount: 1]
02-09 17:00:06.901  4939  5291 I TSLocationManager: [c.t.l.s.GeofencingService handleGeofencingEvent] 
02-09 17:00:06.901  4939  5291 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.901  4939  5291 I TSLocationManager: ║ Geofencing Event: ENTER
02-09 17:00:06.901  4939  5291 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.901  4939  5291 I TSLocationManager: ╟─ Hi hi
02-09 17:00:06.901  4939  5291 I TSLocationManager: ╚═════════════════════════════════════════════
02-09 17:00:06.904  4939  5291 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 17:00:06.915  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.915  4939  4939 D TSLocationManager:   🎾  ActivityRecognitionService [eventCount: 1]
02-09 17:00:06.917  4939  5291 I TSLocationManager: [c.t.l.data.sqlite.b persist] 
02-09 17:00:06.917  4939  5291 I TSLocationManager:   ✅  INSERT: 492963e3-f2ac-4365-86bf-6ebd0e8ee527
02-09 17:00:06.918  4939  5296 D TSLocationManager: [c.t.l.s.ActivityRecognitionService handleActivityRecognitionResult] 
02-09 17:00:06.918  4939  5296 D TSLocationManager:   🚘 ️DetectedActivity [type=STILL, confidence=100]
02-09 17:00:06.920  4939  5296 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish ActivityRecognitionService [eventCount: 0, sticky: false]
02-09 17:00:06.927  4939  5291 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:06.927  4939  5291 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.927  4939  5291 I TSLocationManager: ║ HTTP Service (count: 1)
02-09 17:00:06.927  4939  5291 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.929  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.929  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 1]
02-09 17:00:06.929  4939  5299 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.929  4939  5299 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.929  4939  5299 I TSLocationManager: ║ providerchange LocationResult: 3
02-09 17:00:06.929  4939  5299 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.929  4939  5299 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h10m0s19ms alt=137.79998779296875 vAcc=1.9931581], age: 53ms, time: 1675951206876
02-09 17:00:06.932  4939  5291 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish GeofencingService [eventCount: 0, sticky: false]
02-09 17:00:06.936  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.936  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 2]
02-09 17:00:06.938  4939  5291 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.938  4939  5291 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.938  4939  5291 I TSLocationManager: ║ motionchange LocationResult: 1
02-09 17:00:06.938  4939  5291 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.938  4939  5291 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h10m0s19ms alt=137.79998779296875 vAcc=1.9931581], age: 60ms, time: 1675951206876
02-09 17:00:06.944  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.944  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 3]
02-09 17:00:06.945  4939  5296 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.945  4939  5296 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.945  4939  5296 I TSLocationManager: ║ providerchange LocationResult: 3
02-09 17:00:06.945  4939  5296 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.945  4939  5296 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h10m0s67ms alt=137.79998779296875 vAcc=1.9931581], age: 21ms, time: 1675951206924
02-09 17:00:06.950  4939  5025 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 2 isFinished? true
02-09 17:00:06.950  4939  5025 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 17:00:06.950  4939  5025 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.950  4939  5012 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 17:00:06.956  4939  5012 I TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.956  4939  5012 I TSLocationManager:   🔵  Acquired providerchange position
02-09 17:00:06.956  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.956  4939  4939 D TSLocationManager:   🎾  BackgroundTaskService [eventCount: 1]
02-09 17:00:06.956  4939  5012 D TSLocationManager: [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 24.63
02-09 17:00:06.956  4939  4939 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task start] ⏳ startBackgroundTask: 1
02-09 17:00:06.958  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.958  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 4]
02-09 17:00:06.960  4939  5025 I TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] 
02-09 17:00:06.960  4939  5025 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.960  4939  5025 I TSLocationManager: ║ motionchange LocationResult: 1
02-09 17:00:06.960  4939  5025 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.960  4939  5025 I TSLocationManager: ╟─ 📍  Location[fused 40.990604,28.649666 hAcc=24.63 et=+22h10m0s67ms alt=137.79998779296875 vAcc=1.9931581], age: 35ms, time: 1675951206924
02-09 17:00:06.960  4939  5008 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 17:00:06.961  4939  5012 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 3 isFinished? true
02-09 17:00:06.962  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.965  4939  5008 I TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.965  4939  5008 I TSLocationManager:   🔵  Acquired motionchange position, isMoving: false
02-09 17:00:06.965  4939  5008 D TSLocationManager: [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 24.63
02-09 17:00:06.967  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.970  4939  4939 D TSLocationManager: [c.t.l.l.TSLocationManager$b onLocation] 
02-09 17:00:06.970  4939  4939 D TSLocationManager:   ℹ️  Distance from last location: 5381747.0
02-09 17:00:06.975  4939  5008 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 1 isFinished? true
02-09 17:00:06.975  4939  5008 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 0
02-09 17:00:06.975  4939  5008 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.976  4939  5299 W TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.976  4939  5299 W TSLocationManager:   ⚠️  Failed to find SingleLocationRequest
02-09 17:00:06.976  4939  5299 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 3 isFinished? true
02-09 17:00:06.976  4939  5291 W TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.976  4939  5291 W TSLocationManager:   ⚠️  Failed to find SingleLocationRequest
02-09 17:00:06.977  4939  5291 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 1 isFinished? true
02-09 17:00:06.977  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:06.977  4939  4939 D TSLocationManager:   🎾  TrackingService [eventCount: 1]
02-09 17:00:06.977  4939  5291 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 3769
02-09 17:00:06.977  4939  5296 W TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.977  4939  5296 W TSLocationManager:   ⚠️  Failed to find SingleLocationRequest
02-09 17:00:06.977  4939  4939 I TSLocationManager: [c.t.l.service.TrackingService handleMotionChangeResult] 
02-09 17:00:06.977  4939  4939 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:06.977  4939  4939 I TSLocationManager: ║ TrackingService motionchange: false
02-09 17:00:06.977  4939  4939 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:06.977  4939  5299 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.978  4939  5291 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.978  4939  5296 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 3 isFinished? true
02-09 17:00:06.978  4939  5025 W TSLocationManager: [c.t.l.l.TSLocationManager onSingleLocationResult] 
02-09 17:00:06.978  4939  5025 W TSLocationManager:   ⚠️  Failed to find SingleLocationRequest
02-09 17:00:06.978  4939  5296 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.978  4939  5025 D TSLocationManager: [c.t.l.s.LocationRequestService handleLocationResult] SingleLocationRequest 1 isFinished? true
02-09 17:00:06.978  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish TrackingService [eventCount: 0, sticky: false]
02-09 17:00:06.979  4939  5025 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 3817
02-09 17:00:06.979  4939  5025 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.980  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: false]
02-09 17:00:06.980  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:06.980  4939  4939 D TSLocationManager:   🔴  LocationRequestService stopped
02-09 17:00:06.981  4939  4939 I TSLocationManager: [c.t.l.s.ActivityRecognitionService start] 
02-09 17:00:06.981  4939  4939 I TSLocationManager:   🎾  Start motion-activity updates
02-09 17:00:06.981  4939  5012 D TSLocationManager: [c.t.l.data.sqlite.b first] 
02-09 17:00:06.981  4939  5012 D TSLocationManager:   ✅  Locked 1 records
02-09 17:00:06.981  4939  5012 I TSLocationManager: [c.t.l.http.HttpService a] 
02-09 17:00:06.981  4939  5012 I TSLocationManager:   🔵  HTTP POST: 492963e3-f2ac-4365-86bf-6ebd0e8ee527
02-09 17:00:07.031  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:07.031  4939  4939 D TSLocationManager:   🎾  ActivityRecognitionService [eventCount: 1]
02-09 17:00:07.032  4939  5012 D TSLocationManager: [c.t.l.s.ActivityRecognitionService handleActivityRecognitionResult] 
02-09 17:00:07.032  4939  5012 D TSLocationManager:   🚘 ️DetectedActivity [type=STILL, confidence=100]
02-09 17:00:07.033  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish ActivityRecognitionService [eventCount: 0, sticky: false]
02-09 17:00:07.232  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:07.232  4939  4939 D TSLocationManager:   🔴  TrackingService stopped
02-09 17:00:07.435  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:07.435  4939  4939 D TSLocationManager:   🔴  GeofencingService stopped
02-09 17:00:07.499  4939  5021 I TSLocationManager: [c.t.l.http.HttpService$h onResponse] 
02-09 17:00:07.499  4939  5021 I TSLocationManager:   🔵  Response: 200
02-09 17:00:07.500  4939  5021 D TSLocationManager: [c.t.l.data.sqlite.b destroy] 
02-09 17:00:07.500  4939  5021 D TSLocationManager:   ✅  DESTROY: 492963e3-f2ac-4365-86bf-6ebd0e8ee527
02-09 17:00:07.502  4939  5021 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task stop] ⏳ stopBackgroundTask: 1
02-09 17:00:07.502  4939  5021 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish BackgroundTaskService [eventCount: 0, sticky: false]
02-09 17:00:07.504  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:07.504  4939  4939 D TSLocationManager:   🔴  BackgroundTaskService stopped
02-09 17:00:07.913  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:07.913  4939  4939 D TSLocationManager:   🎾  GeofencingService [eventCount: 1]
02-09 17:00:07.914  4939  5012 I TSLocationManager: [c.t.l.s.GeofencingService handleGeofencingEvent] 
02-09 17:00:07.914  4939  5012 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:07.914  4939  5012 I TSLocationManager: ║ Geofencing Event: DWELL
02-09 17:00:07.914  4939  5012 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:07.914  4939  5012 I TSLocationManager: ╟─ Hi hi
02-09 17:00:07.914  4939  5012 I TSLocationManager: ╚═════════════════════════════════════════════
02-09 17:00:07.914  4939  5012 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 4306
02-09 17:00:07.919  4939  5012 I TSLocationManager: [c.t.l.data.sqlite.b persist] 
02-09 17:00:07.919  4939  5012 I TSLocationManager:   ✅  INSERT: 0dc43515-bbd1-40b6-90ed-bc56ea2a9ce2
02-09 17:00:07.920  4939  5012 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:07.920  4939  5012 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:07.920  4939  5012 I TSLocationManager: ║ HTTP Service (count: 1)
02-09 17:00:07.920  4939  5012 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:07.922  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish GeofencingService [eventCount: 0, sticky: false]
02-09 17:00:07.925  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:07.925  4939  4939 D TSLocationManager:   🎾  BackgroundTaskService [eventCount: 1]
02-09 17:00:07.925  4939  4939 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task start] ⏳ startBackgroundTask: 2
02-09 17:00:07.927  4939  5012 D TSLocationManager: [c.t.l.data.sqlite.b first] 
02-09 17:00:07.927  4939  5012 D TSLocationManager:   ✅  Locked 1 records
02-09 17:00:07.927  4939  5012 I TSLocationManager: [c.t.l.http.HttpService a] 
02-09 17:00:07.927  4939  5012 I TSLocationManager:   🔵  HTTP POST: 0dc43515-bbd1-40b6-90ed-bc56ea2a9ce2
02-09 17:00:08.035  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:08.035  4939  4939 D TSLocationManager:   🔴  ActivityRecognitionService stopped
02-09 17:00:08.423  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:08.423  4939  4939 D TSLocationManager:   🔴  GeofencingService stopped
02-09 17:00:08.632  4939  5021 I TSLocationManager: [c.t.l.http.HttpService$h onResponse] 
02-09 17:00:08.632  4939  5021 I TSLocationManager:   🔵  Response: 200
02-09 17:00:08.633  4939  5021 D TSLocationManager: [c.t.l.data.sqlite.b destroy] 
02-09 17:00:08.633  4939  5021 D TSLocationManager:   ✅  DESTROY: 0dc43515-bbd1-40b6-90ed-bc56ea2a9ce2
02-09 17:00:08.635  4939  5021 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task stop] ⏳ stopBackgroundTask: 2
02-09 17:00:08.636  4939  5021 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish BackgroundTaskService [eventCount: 0, sticky: false]
02-09 17:00:08.638  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService onDestroy] 
02-09 17:00:08.638  4939  4939 D TSLocationManager:   🔴  BackgroundTaskService stopped
02-09 17:00:09.319  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onStart] ☯️  onStart
02-09 17:00:09.320  4939  4939 D TSLocationManager: [c.t.l.l.LifecycleManager onResume] ☯️  onResume
02-09 17:00:09.321  4939  5012 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:09.321  4939  5012 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:09.321  4939  5012 I TSLocationManager: ║ HTTP Service (count: 0)
02-09 17:00:09.321  4939  5012 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:09.499  4939  5012 D TSLocationManager: [c.t.l.c.TransistorAuthorizationToken$a run] 🔑 Destroyed cached token for tracker.transistorsoft.com
02-09 17:00:09.499  4939  5012 D TSLocationManager: [c.t.l.adapter.TSConfig d] ℹ️   Persist config, dirty: [authorization, authorization.strategy, authorization.refreshPayload]
02-09 17:00:09.764  4939  5021 D TSLocationManager: [c.t.l.c.TransistorAuthorizationToken$b$a onResponse] 🔑 Received token from tracker.transistorsoft.com
02-09 17:00:09.819  4939  4939 W TSLocationManager: [c.t.f.b.BackgroundGeolocationModule ready] 
02-09 17:00:09.819  4939  4939 W TSLocationManager:   ⚠️  #ready already called.  Redirecting to #setConfig
02-09 17:00:09.821  4939  4939 D TSLocationManager: [c.t.l.adapter.TSConfig d] ℹ️   Persist config, dirty: [authorization, authorization.strategy, authorization.accessToken, authorization.refreshToken, authorization.refreshPayload, desiredAccuracy]
02-09 17:00:09.834  4939  4939 W TSLocationManager: [c.t.l.a.BackgroundGeolocation startSchedule] 
02-09 17:00:09.834  4939  4939 W TSLocationManager:   ⚠️  Cannot startSchedule; schedule is null
02-09 17:00:09.836  4939  4971 I TSLocationManager: [c.t.l.data.sqlite.GeofenceDAO destroy] 
02-09 17:00:09.836  4939  4971 I TSLocationManager:   ✅  Hi hi
02-09 17:00:09.836  4939  4971 I TSLocationManager: [c.t.l.data.sqlite.GeofenceDAO create] 
02-09 17:00:09.836  4939  4971 I TSLocationManager:   ✅  Hi hi
02-09 17:00:09.837  4939  4971 D TSLocationManager: [c.t.l.g.TSGeofenceManager d] ℹ️  Persist monitored geofences: []
02-09 17:00:09.846  4939  4939 W TSLocationManager: [c.t.f.b.BackgroundGeolocationModule ready] 
02-09 17:00:09.846  4939  4939 W TSLocationManager:   ⚠️  #ready already called.  Redirecting to #setConfig
02-09 17:00:09.846  4939  4939 D TSLocationManager: [c.t.l.adapter.TSConfig d] ℹ️   Persist config, dirty: [desiredAccuracy]
02-09 17:00:09.852  4939  4939 D TSLocationManager: [c.t.locationmanager.util.c g] 
02-09 17:00:09.852  4939  4939 D TSLocationManager:   ℹ️  LocationAuthorization: Permission granted
02-09 17:00:09.852  4939  5012 I TSLocationManager: - Enable: true → true, trackingMode: 0
02-09 17:00:09.855  4939  5012 D TSLocationManager: [c.t.l.http.HttpService startMonitoringConnectivityChanges] 
02-09 17:00:09.855  4939  5012 D TSLocationManager:   🎾  Start monitoring connectivity changes
02-09 17:00:09.856  4939  5012 D TSLocationManager: [c.t.l.device.DeviceSettings startMonitoringPowerSaveChanges] 
02-09 17:00:09.856  4939  5012 D TSLocationManager:   🎾  Start monitoring powersave changes
02-09 17:00:09.856  4939  5012 I TSLocationManager: [c.t.l.service.HeartbeatService start] 
02-09 17:00:09.856  4939  5012 I TSLocationManager:   🎾  Start heartbeat (60s)
02-09 17:00:09.859  4939  5012 D TSLocationManager: [c.t.locationmanager.util.c h] 
02-09 17:00:09.859  4939  5012 D TSLocationManager:   ℹ️  LocationAuthorization: Permission granted
02-09 17:00:09.866  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:09.866  4939  4939 D TSLocationManager:   🎾  LocationRequestService [eventCount: 1]
02-09 17:00:09.867  4939  5012 I TSLocationManager: [c.t.l.l.SingleLocationRequest startUpdatingLocation] 
02-09 17:00:09.867  4939  5012 I TSLocationManager:   🔵  [SingleLocationRequest start, action: 1, requestId: 4]
02-09 17:00:09.868  4939  5012 I TSLocationManager: [c.t.l.s.ActivityRecognitionService start] 
02-09 17:00:09.868  4939  5012 I TSLocationManager:   🎾  Start motion-activity updates
02-09 17:00:09.869  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish LocationRequestService [eventCount: 0, sticky: true]
02-09 17:00:10.068  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity execute] locationsettings
02-09 17:00:10.076  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity stop] eventCount: 0
02-09 17:00:10.096  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$e run] evaluation buffer timer elapsed
02-09 17:00:10.114  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] ℹ️  GeofencingClient addGeofences
02-09 17:00:10.114  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager d] ℹ️  Persist monitored geofences: [Hi hi]
02-09 17:00:10.115  4939  4939 D TSLocationManager: [c.t.l.g.TSGeofenceManager$f$a a] 
02-09 17:00:10.115  4939  4939 D TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:10.115  4939  4939 D TSLocationManager: ║ TSGeofenceManager monitoring 1/1
02-09 17:00:10.115  4939  4939 D TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:10.115  4939  4939 D TSLocationManager: ╟─ 🎾  Hi hi
02-09 17:00:10.115  4939  4939 D TSLocationManager: ╚═════════════════════════════════════════════
02-09 17:00:10.120  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:10.120  4939  4939 D TSLocationManager:   🎾  GeofencingService [eventCount: 1]
02-09 17:00:10.120  4939  5025 I TSLocationManager: [c.t.l.s.GeofencingService handleGeofencingEvent] 
02-09 17:00:10.120  4939  5025 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:10.120  4939  5025 I TSLocationManager: ║ Geofencing Event: ENTER
02-09 17:00:10.120  4939  5025 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:10.120  4939  5025 I TSLocationManager: ╟─ Hi hi
02-09 17:00:10.120  4939  5025 I TSLocationManager: ╚═════════════════════════════════════════════
02-09 17:00:10.122  4939  5025 D TSLocationManager: [c.t.l.g.TSGeofenceManager setLocation] isMoving: false | stateChanged: false | timerExpired: false | elapsed: 4306
02-09 17:00:10.124  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:10.124  4939  4939 D TSLocationManager:   🎾  ActivityRecognitionService [eventCount: 1]
02-09 17:00:10.125  4939  5012 D TSLocationManager: [c.t.l.s.ActivityRecognitionService handleActivityRecognitionResult] 
02-09 17:00:10.125  4939  5012 D TSLocationManager:   🚘 ️DetectedActivity [type=STILL, confidence=100]
02-09 17:00:10.127  4939  4939 D TSLocationManager: [c.t.l.a.TSLocationManagerActivity onDestroy] 
02-09 17:00:10.127  4939  5012 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish ActivityRecognitionService [eventCount: 0, sticky: false]
02-09 17:00:10.136  4939  5025 I TSLocationManager: [c.t.l.data.sqlite.b persist] 
02-09 17:00:10.136  4939  5025 I TSLocationManager:   ✅  INSERT: 275efea9-fa4e-4874-99d0-ec2014b0e95e
02-09 17:00:10.140  4939  5025 I TSLocationManager: [c.t.l.http.HttpService flush] 
02-09 17:00:10.140  4939  5025 I TSLocationManager: ╔═════════════════════════════════════════════
02-09 17:00:10.140  4939  5025 I TSLocationManager: ║ HTTP Service (count: 1)
02-09 17:00:10.140  4939  5025 I TSLocationManager: ╠═════════════════════════════════════════════
02-09 17:00:10.145  4939  4939 D TSLocationManager: [c.t.l.service.AbstractService start] 
02-09 17:00:10.145  4939  4939 D TSLocationManager:   🎾  BackgroundTaskService [eventCount: 1]
02-09 17:00:10.145  4939  4939 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task start] ⏳ startBackgroundTask: 3
02-09 17:00:10.147  4939  5025 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish GeofencingService [eventCount: 0, sticky: false]
02-09 17:00:10.148  4939  5012 D TSLocationManager: [c.t.l.data.sqlite.b first] 
02-09 17:00:10.148  4939  5012 D TSLocationManager:   ✅  Locked 1 records
02-09 17:00:10.149  4939  5012 I TSLocationManager: [c.t.l.http.HttpService a] 
02-09 17:00:10.149  4939  5012 I TSLocationManager:   🔵  HTTP POST: 275efea9-fa4e-4874-99d0-ec2014b0e95e
02-09 17:00:10.450  4939  5021 I TSLocationManager: [c.t.l.http.HttpService$h onResponse] 
02-09 17:00:10.450  4939  5021 I TSLocationManager:   🔵  Response: 200
02-09 17:00:10.450  4939  5021 D TSLocationManager: [c.t.l.data.sqlite.b destroy] 
02-09 17:00:10.450  4939  5021 D TSLocationManager:   ✅  DESTROY: 275efea9-fa4e-4874-99d0-ec2014b0e95e
02-09 17:00:10.453  4939  5021 I TSLocationManager: [c.t.l.u.BackgroundTaskManager$Task stop] ⏳ stopBackgroundTask: 3
02-09 17:00:10.453  4939  5021 D TSLocationManager: [c.t.l.service.AbstractService finish] ⚙️︎  finish BackgroundTaskService [eventCount: 0, sticky: false]

valerianglobekeeper avatar Feb 09 '23 14:02 valerianglobekeeper

BackgroundGeolocation.ready is designed to be called in your Flutter App instance. Where is your Flutter App instance?

christocracy avatar Feb 09 '23 14:02 christocracy

@christocracy Since the app is native we have just Application instance, I didn't add FlutterApplication because I didn't see in your example any important code that may influence the geolocation logic and it works for me.

valerianglobekeeper avatar Feb 09 '23 14:02 valerianglobekeeper

If you're using the plugin in a non-standard way, there's little I can do to help you. This Flutter plugin is designed to be used in standard Flutter apps.

That being said, you should be executing the .ready method in your MainActivity then -- NOT in the main.dart

christocracy avatar Feb 09 '23 14:02 christocracy

But I called .ready from MainActivity of native app and it actually works I just don't get the results in backgroundGeolocationHeadlessTask.

If you check logs, there location updates, geofence callbacks. Maybe I just missed something in setting up

valerianglobekeeper avatar Feb 09 '23 15:02 valerianglobekeeper

.ready is not to be called when an Android app is headless.

calling .ready should not exist in main.dart. Neither should BackgroundFetch.configure

christocracy avatar Feb 09 '23 15:02 christocracy

Adding event listeners (eg: onLocation, etc) should not exist in main.dart. That is for UI code. UI code does not exist outside of Flutter Widget components.

christocracy avatar Feb 09 '23 15:02 christocracy

@christocracy can the plugin support Activity instead of FlutterActivity?

danpe avatar Feb 14 '23 13:02 danpe

The plugin does not “support” any Activity. The plugin contains no reference to the Android Activity class.

christocracy avatar Feb 14 '23 13:02 christocracy

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] avatar May 11 '24 01:05 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale.

github-actions[bot] avatar May 25 '24 01:05 github-actions[bot]