Skip to content

[Help Wanted]: Background geolocation api request format changes while app is running #2519

@Ikshit001

Description

@Ikshit001

Required Reading

  • Confirmed

Plugin Version

5.0.3

Mobile operating-system(s)

  • iOS
  • Android

Device Manufacturer(s) and Model(s)

CPH2717 OnePlus

Device operating-systems(s)

Android 16

React Native / Expo version

No response

What do you require assistance about?

I am experiencing a critical issue where the plugin enters a permanent loop of 422 Unprocessable Entity errors immediately following a 403 Forbidden response.

Based on my logs, after the server rejects a request with a 403, the plugin's configuration for persistence and locationTemplate seems to be changed can you identify the issue?

[Optional] Plugin Code and/or Config

import { useEffect, useState } from "react";
import BackgroundGeolocation, {
  State,
  AuthorizationEvent,
  HttpEvent,
} from "react-native-background-geolocation";
import { TokenManager } from "@/lib/token-manager";
import API_CONFIG from "@/config/api.config";

interface UseBackgroundGeoProps {
  hubId?: string;
}

const useBackgroundGeolocation = ({ hubId }: UseBackgroundGeoProps) => {
  const [enabled, setEnabled] = useState(false);
  const [token, setToken] = useState<string | null>(null);
  const [refreshToken, setRefreshToken] = useState<string | null>(null);

  const syncLibraryTokens = async () => {
    try {
      const accessToken = await TokenManager.getAccessToken();
      const refreshToken = await TokenManager.getRefreshToken();

      if (!accessToken || !refreshToken) return;
      await BackgroundGeolocation.setConfig({
        authorization: {
          strategy: "JWT",
          accessToken: accessToken,
          refreshToken: refreshToken,
          refreshUrl: `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.AUTH.REFRESH_GEO_LOCATION}`,
          refreshPayload: {
            "refresh_token": "{refreshToken}",
          },
          refreshHeaders: {
            "platform-type": "app",
            "app-secret-key": "Test",
          },
        }
      });
    } catch (error: any) {
      if (error?.includes && error.includes("busy")) {
        console.log("ℹ️ [Geo] Library busy, it will retry later.");
      }
    }
  };

  useEffect(() => {
    const loadTokens = async () => {
      try {
        const t = await TokenManager.getAccessToken();
        const rt = await TokenManager.getRefreshToken();
        setToken(t);
        setRefreshToken(rt);
      } catch (error) {
        console.error("Failed to load tokens", error);
      }
    };
    loadTokens();
  }, []);


  useEffect(() => {
    BackgroundGeolocation.onLocation((location) => {
      console.log("📍 LOCATION DETECTED", {
        lat: location.coords.latitude,
        lng: location.coords.longitude,
        accuracy: location.coords.accuracy,
        event: location.event,
        odometer: location.odometer,
      });
    });

    BackgroundGeolocation.onMotionChange((motion) => {
      console.log("Motion change", motion);
    });

    BackgroundGeolocation.onAuthorization(async (event: AuthorizationEvent) => {
      if (event.success) {
        await TokenManager.setTokens(
          event.response?.access_token || event.response?.data?.access_token,
          event.response?.refresh_token || event.response?.data?.refresh_token
        );
      } else {
        syncLibraryTokens();
      }
    });

    BackgroundGeolocation.onHttp((response: HttpEvent) => {
      console.log(`[http] ${response.status} ${response.responseText}`);
    });
    BackgroundGeolocation.ready({
      geolocation: {
        desiredAccuracy: BackgroundGeolocation.DesiredAccuracy.Navigation,
        locationUpdateInterval: 5000,
        fastestLocationUpdateInterval: 5000,
        locationAuthorizationRequest: BackgroundGeolocation.LocationRequest.Always,
        distanceFilter:0
      },
      app: {
        stopOnTerminate: false,
        startOnBoot: true,
        enableHeadless: true,
        notification: {
          title: "Background Geolocation",
          text: "Tracking location",
          smallIcon: "mipmap/ic_launcher",
          sticky: true,
        },
      },
      logger: {
        logLevel: BackgroundGeolocation.LogLevel.Verbose,
        debug:false,
        logMaxDays:1
      },
      http: {
        url: `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.RIDER.UPDATE_LOCATION}`,
        method: "POST",
        autoSync: true,
        batchSync: true,
        rootProperty: "data",
        maxBatchSize:100,
        headers: {
          "Content-Type": "application/json",
          "platform-type": "app",
          "app-secret-key": "Test",
        },
      },
    }).then((state: State) => {
      console.log("[ready] Plugin initialized, enabled:", state.enabled);
      setEnabled(state.enabled);
    });

    return () => {
      BackgroundGeolocation.removeListeners();
    };
  }, []); /// axios file -import { API_CONFIG } from "@/config/api.config";
import { APP_CONFIG } from "@/config/app.config";
import { store } from "@/store";
import { clearUser } from "@/store/userSlice";
import axios, {
  AxiosError,
  AxiosResponse,
  InternalAxiosRequestConfig,
} from "axios";
import { router } from "expo-router";
import { TokenManager } from "./token-manager";
import BackgroundGeolocation from "react-native-background-geolocation";

const axiosInstance = axios.create({
  baseURL: API_CONFIG.BASE_URL,
  timeout: API_CONFIG.TIMEOUT,
  headers: {
    "Content-Type": "application/json",
    "platform-type": process.env.EXPO_PUBLIC_PLATFORM_TYPE,
    "app-secret-key": process.env.EXPO_PUBLIC_APP_SECRET_KEY,
  },
});

axiosInstance.interceptors.request.use(
  async (config: InternalAxiosRequestConfig) => {
    const authHeader = await TokenManager.getAuthHeader();
    if (authHeader.Authorization && config.headers) {
      config.headers.Authorization = authHeader.Authorization;
    }

    if (APP_CONFIG.ENABLE_NETWORK_LOGGER) {
      console.log("API Request:", {
        method: config.method?.toUpperCase(),
        url: config.url,
        data: config.data,
        Authorization: config.headers.Authorization,
      });
    }

    return config;
  },
  (error: AxiosError) => {
    console.error("Request Error:", error);
    return Promise.reject(error);
  },
);

axiosInstance.interceptors.response.use(
  (response: AxiosResponse) => {
    if (APP_CONFIG.ENABLE_NETWORK_LOGGER) {
      console.log("API Response:", {
        status: response.status,
        url: response.config.url,
        data: response.data,
      });
    }

    return response;
  },
  async (error: AxiosError) => {
    // If there's no response (network error), keep existing behavior
    if (!error.response) {
      if (error.message === "Network Error") {
        console.error(
          "Network Error - please check your internet connection.",
          error.message,
        );
      } else {
        console.error("Error:", error.message);
      }

      return Promise.reject(error);
    }

    try {
      const { status } = error.response;
      const originalConfig = error.config as InternalAxiosRequestConfig & {
        _retry?: boolean;
      };

      // Avoid attempting refresh for login-related APIs or refresh endpoint itself
      const isLoginAPI =
        originalConfig?.url?.includes("/auth/login") ||
        originalConfig?.url?.includes("/auth/verify-login-otp");
      const isRefreshAPI = originalConfig?.url?.includes(
        API_CONFIG.ENDPOINTS.AUTH.REFRESH,
      );

      // handle 401 with refresh-token flow (skip if login/refresh endpoints)
      if (status === 401 && !isLoginAPI && !isRefreshAPI) {
        // queue + single-refresh mechanism
        type QueueItem = {
          resolve: (value?: unknown) => void;
          reject: (error?: unknown) => void;
          config: InternalAxiosRequestConfig;
        };

        let isRefreshing = (axiosInstance as any).__isRefreshing as
          | boolean
          | undefined;
        let failedQueue = (axiosInstance as any).__failedQueue as
          | QueueItem[]
          | undefined;

        if (!failedQueue) {
          failedQueue = [];
          (axiosInstance as any).__failedQueue = failedQueue;
        }

        const processQueue = (err: any, token: string | null = null) => {
          failedQueue!.forEach((prom) => {
            if (err) {
              prom.reject(err);
            } else {
              if (prom.config.headers) {
                prom.config.headers.Authorization = token
                  ? `Bearer ${token}`
                  : undefined;
              }
              prom.resolve(axiosInstance(prom.config));
            }
          });
          (axiosInstance as any).__failedQueue = [];
        };

        // If we've already tried to refresh, queue this request
        if (isRefreshing) {
          console.log(
            "⏳ [REFRESH] Refresh in progress, queuing request:",
            originalConfig.url,
          );
          return new Promise((resolve, reject) => {
            failedQueue!.push({ resolve, reject, config: originalConfig });
          });
        }

        (axiosInstance as any).__isRefreshing = true;
        console.log("🔄 [REFRESH] Starting token refresh flow...");
        try {
          const refreshToken = await TokenManager.getRefreshToken();
          if (!refreshToken) {
            console.warn("⚠️ [REFRESH] No refresh token found - logging out");
            // nothing to do: force logout
            await TokenManager.clearTokens();
            store.dispatch(clearUser());
            try {
              router.replace("/Login");
            } catch (navErr) {
              console.warn("Router navigation failed:", navErr);
            }
            return Promise.reject(error);
          }

          console.log("📤 [REFRESH] Calling refresh endpoint...");
          // Call refresh endpoint using a bare axios instance to avoid interceptor loops
          const refreshUrl = `${API_CONFIG.BASE_URL.replace(
            /\/$/,
            "",
          )}/${API_CONFIG.ENDPOINTS.AUTH.REFRESH.replace(/^\//, "")}`;

          const refreshPayload = { data: { refresh_token: refreshToken } };

          const refreshResponse = await axios.post(refreshUrl, refreshPayload, {
            headers: { "Content-Type": "application/json" },
            timeout: API_CONFIG.TIMEOUT,
          });

          console.log("✅ [REFRESH] Refresh successful, updating tokens...");

          const newAccess =
            refreshResponse?.data?.data?.access_token ||
            refreshResponse?.data?.access_token;
          const newRefresh =
            refreshResponse?.data?.data?.refresh_token ||
            refreshResponse?.data?.refresh_token;

          if (!newAccess) {
            throw new Error("Refresh did not return new access token");
          }
     BackgroundGeolocation.setConfig({
            authorization: {
              strategy: "JWT",
              accessToken: newAccess,
              refreshToken: newRefresh,
              refreshUrl: `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.AUTH.REFRESH_GEO_LOCATION}`,
              refreshPayload: {
                refresh_token: "{refreshToken}",
              },
            },
          }).catch(e => console.log("Library busy, skipping manual push."));;
          await TokenManager.setTokens(newAccess, newRefresh ?? refreshToken);

          // update axiosInstance default header
          axiosInstance.defaults.headers.Authorization = `Bearer ${newAccess}`;

          console.log(
            `✅ [REFRESH] Processing ${failedQueue.length} queued requests...`,
          );
          processQueue(null, newAccess);

          // retry original request with new token
          if (originalConfig.headers) {
            originalConfig.headers.Authorization = `Bearer ${newAccess}`;
          }

          console.log("🔁 [REFRESH] Retrying original request with new token");
          return axiosInstance(originalConfig);
        } catch (refreshErr) {
          console.error("❌ [REFRESH] Refresh failed:", refreshErr,refreshErr?.response?.data);
          processQueue(refreshErr, null);
          // clear tokens and force logout
          try {
            await TokenManager.clearTokens();
          } catch {
            /* ignore */
          }
          store.dispatch(clearUser());
          try {
            router.replace("/Login");
          } catch (navErr) {
            console.warn("Router navigation failed:", navErr);
          }

          return Promise.reject(refreshErr);
        } finally {
          (axiosInstance as any).__isRefreshing = false;
        }
      }

      // Handle 401 for login/refresh endpoints (no refresh attempt)
      if (status === 401 && (isLoginAPI || isRefreshAPI)) {
        await TokenManager.clearTokens();
        store.dispatch(clearUser());
        try {
          if (!isLoginAPI) {
            router.replace("/Login");
          }
        } catch (navErr) {
          console.warn("Router navigation failed:", navErr);
        }
      }

      // other status codes can be handled here if needed
    } catch (err) {
      console.log(err);

      if (err instanceof Error && err.message === "NEXT_REDIRECT") {
        console.log(err.message);

        throw err;
      }
    }

    return Promise.reject(error);
  },
);

export default axiosInstance;


  useEffect(() => {
    if (!token || !refreshToken || !hubId) return;
    BackgroundGeolocation.setConfig({
      persistence: {
        locationTemplate:
          '{"lat":<%= latitude %>,"lng":<%= longitude %>,"timestamp": "<%= timestamp %>"}',
        extras: {
          hub_id: hubId,
        },
      },
      geolocation: {
        desiredAccuracy: BackgroundGeolocation.DesiredAccuracy.Navigation,
        locationUpdateInterval: 5000,
        fastestLocationUpdateInterval: 5000,
        locationAuthorizationRequest: BackgroundGeolocation.LocationRequest.Always,
        distanceFilter:0
      },
         http: {
        url: `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.RIDER.UPDATE_LOCATION}`,
        method: "POST",
        autoSync: true,
        batchSync: true,
        rootProperty: "data",
        maxBatchSize:100,
        headers: {
          "Content-Type": "application/json",
          "platform-type": "app",
          "app-secret-key": "Test",
        },
      },
      authorization: {
        strategy: "JWT",
        accessToken: token,
        refreshToken: refreshToken,
        refreshUrl: `${API_CONFIG.BASE_URL}${API_CONFIG.ENDPOINTS.AUTH.REFRESH_GEO_LOCATION}`,
        refreshPayload: {
          "refresh_token": "{refreshToken}",
        },
        refreshHeaders: {
          "platform-type": "app",
          "app-secret-key": "Test",
        },
      },
    }).then(() => {
      BackgroundGeolocation.getState().then((state) => {
        if (!state.enabled) {
          BackgroundGeolocation.start();
          setEnabled(true);
        }
      });
    });
  }, [token, refreshToken, hubId]);

  const handldeCloseGeoLocation = () => {
    BackgroundGeolocation.stop().then(() => {
      console.log("geolocation sdk is off now");
      setEnabled(false);
    });
  };

  return { enabled, setEnabled, handldeCloseGeoLocation };
};

export default useBackgroundGeolocation;


// index.js file 

import AsyncStorage from "@react-native-async-storage/async-storage";
import "expo-router/entry";
import BackgroundGeolocation from "react-native-background-geolocation";
const BgHeadlessTask = async (event) => {
  const { name, params } = event;
  if (name === "authorization") {
    try {
      const { access_token, refresh_token } = params?.response?.data || {};      
      if (access_token && refresh_token) {
        await AsyncStorage.multiSet([
          ["access_token", access_token],
          ["refresh_token", refresh_token]
        ]);
      }
    } catch (error) {
      console.error("[HeadlessTask] Storage Error:", error);
    }
  }
  return Promise.resolve(); 
};

BackgroundGeolocation.registerHeadlessTask(BgHeadlessTask);

[Optional] Relevant log output

║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:34:54.557 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2431
03-02 14:34:54.597 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 82
03-02 14:34:54.602 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:34:54.603 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:34:54.708 INFO [HttpService$e onResponse] 
  🔵  Response: 204
03-02 14:34:54.711 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ http
03-02 14:34:54.712 DEBUG [d0 a] 
  ✅  DELETED: (1)
03-02 14:34:54.715 DEBUG [TSLog d] 💀  event: http
03-02 14:34:54.721 DEBUG [d0 a] 
  ✅  Locked 0 records
03-02 14:34:54.722 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 82
03-02 14:34:54.723 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2432
03-02 14:34:59.530 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5226, eventCount: 1]
03-02 14:34:59.531 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=21.879 et=+6d19h54m27s117ms alt=162.8000030517578 vAcc=1.039805 vel=0.0 sAcc=0.8]
╟─ Age: 154ms, time: 1772442299376

03-02 14:34:59.532 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:34:59.533 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=21.879, acc(prev)=1.3}
03-02 14:34:59.534 INFO [d0 a] 
  💾 ✅ 7b8c4471-112c-432f-b427-1dd50fe3df72
03-02 14:34:59.535 INFO [TrackingService b] 
  ℹ️  Distance from stoppedAtLocation: 119.041
03-02 14:34:59.535 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5226, eventCount: 0, sticky: true]
03-02 14:34:59.536 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ location
03-02 14:34:59.536 DEBUG [TSLog d] 💀  event: location
03-02 14:34:59.537 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:34:59.538 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2433
03-02 14:34:59.565 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 83
03-02 14:34:59.569 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:34:59.573 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:34:59.674 INFO [HttpService$e onResponse] 
  🔵  Response: 204
03-02 14:34:59.676 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ http
03-02 14:34:59.677 DEBUG [d0 a] 
  ✅  DELETED: (1)
03-02 14:34:59.677 DEBUG [TSLog d] 💀  event: http
03-02 14:34:59.683 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2434
03-02 14:34:59.686 DEBUG [d0 a] 
  ✅  Locked 0 records
03-02 14:34:59.687 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 83
03-02 14:35:04.405 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5227, eventCount: 1]
03-02 14:35:04.407 INFO [TrackingService b] 
  ℹ️  Location availability: false
03-02 14:35:04.408 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5227, eventCount: 0, sticky: true]
03-02 14:35:04.490 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5228, eventCount: 1]
03-02 14:35:04.492 INFO [TrackingService b] 
  ℹ️  Location availability: true
03-02 14:35:04.492 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5228, eventCount: 0, sticky: true]
03-02 14:35:04.520 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5229, eventCount: 1]
03-02 14:35:04.521 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.5 et=+6d19h54m32s109ms alt=162.8000030517578 vAcc=1.075651 vel=0.0 sAcc=0.5]
╟─ Age: 153ms, time: 1772442304368

03-02 14:35:04.521 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:04.522 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.5, acc(prev)=21.879}
03-02 14:35:04.523 INFO [TrackingService b] 
  ℹ️  Distance from stoppedAtLocation: 139.42
03-02 14:35:04.523 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5229, eventCount: 0, sticky: true]
03-02 14:35:04.527 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ location
03-02 14:35:04.527 DEBUG [TSLog d] 💀  event: location
03-02 14:35:04.528 INFO [d0 a] 
  💾 ✅ dde8d2f7-5e97-4a4b-9c0c-84f5411cfff3
03-02 14:35:04.530 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2435
03-02 14:35:04.530 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:35:04.550 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 84
03-02 14:35:04.556 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:35:04.556 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:35:04.665 INFO [HttpService$e onResponse] 
  🔵  Response: 204
03-02 14:35:04.666 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ http
03-02 14:35:04.666 DEBUG [d0 a] 
  ✅  DELETED: (1)
03-02 14:35:04.666 DEBUG [TSLog d] 💀  event: http
03-02 14:35:04.669 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2436
03-02 14:35:04.673 DEBUG [d0 a] 
  ✅  Locked 0 records
03-02 14:35:04.674 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 84
03-02 14:35:09.546 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5230, eventCount: 1]
03-02 14:35:09.549 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.1 et=+6d19h54m37s113ms alt=162.8000030517578 vAcc=1.0263518 vel=0.0 sAcc=0.5]
╟─ Age: 177ms, time: 1772442309371

03-02 14:35:09.550 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:09.551 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.1, acc(prev)=1.5}
03-02 14:35:09.551 INFO [TrackingService b] 
  ℹ️  Distance from stoppedAtLocation: 139.81999
03-02 14:35:09.552 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5230, eventCount: 0, sticky: true]
03-02 14:35:09.561 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ location
03-02 14:35:09.562 DEBUG [TSLog d] 💀  event: location
03-02 14:35:09.562 INFO [d0 a] 
  💾 ✅ ce4ba196-6269-4ec0-91e6-ccc51f1afc88
03-02 14:35:09.566 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:35:09.566 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2437
03-02 14:35:09.612 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 85
03-02 14:35:09.615 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:35:09.616 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:35:09.724 INFO [HttpService$e onResponse] 
  🔵  Response: 204
03-02 14:35:09.726 DEBUG [d0 a] 
  ✅  DELETED: (1)
03-02 14:35:09.726 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ http
03-02 14:35:09.727 DEBUG [TSLog d] 💀  event: http
03-02 14:35:09.734 DEBUG [d0 a] 
  ✅  Locked 0 records
03-02 14:35:09.734 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2438
03-02 14:35:09.735 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 85
03-02 14:35:14.430 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5231, eventCount: 1]
03-02 14:35:14.430 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.5 et=+6d19h54m42s99ms alt=162.8000030517578 vAcc=1.0133715 vel=0.0 sAcc=0.7]
╟─ Age: 73ms, time: 1772442314358

03-02 14:35:14.431 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:14.432 INFO [TrackingService b] 
  ℹ️  Distance from stoppedAtLocation: 139.42
03-02 14:35:14.432 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5231, eventCount: 0, sticky: true]
03-02 14:35:14.432 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.5, acc(prev)=1.1}
03-02 14:35:14.434 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ location
03-02 14:35:14.434 DEBUG [TSLog d] 💀  event: location
03-02 14:35:14.436 INFO [d0 a] 
  💾 ✅ 5897175d-88f4-463c-b39e-423eed7fb36f
03-02 14:35:14.436 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2439
03-02 14:35:14.438 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:35:14.453 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 86
03-02 14:35:14.455 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:35:14.455 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:35:14.545 INFO [HttpService$e onResponse] 
  🔵  Response: 204
03-02 14:35:14.546 DEBUG [HeadlessEventTx a] 💀 🛜 ⚡️ http
03-02 14:35:14.546 DEBUG [TSLog d] 💀  event: http
03-02 14:35:14.546 DEBUG [d0 a] 
  ✅  DELETED: (1)
03-02 14:35:14.547 DEBUG [TSLog d] [onHeadlessJsTaskFinish] taskId: 2440
03-02 14:35:14.548 DEBUG [d0 a] 
  ✅  Locked 0 records
03-02 14:35:14.548 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 86
03-02 14:35:15.943 DEBUG [LifecycleManager g] ☯️  onStart
03-02 14:35:15.959 DEBUG [LifecycleManager f] ☯️  onResume
03-02 14:35:16.298 INFO [ActivityRecognitionService d] 
  🎾  Start motion-activity updates
03-02 14:35:16.302 INFO [ActivityRecognitionService d] 
  🎾  Start motion-activity updates
03-02 14:35:16.303 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 0)
╠═════════════════════════════════════════════

03-02 14:35:16.312 DEBUG [LocationAuthorization withBackgroundPermission] 
  ℹ️  LocationAuthorization: Permission granted
03-02 14:35:16.313 DEBUG [TSGeofenceManager$d run] 
╔═════════════════════════════════════════════
║ TSGeofenceManager monitoring 0/0
╠═════════════════════════════════════════════
╚═════════════════════════════════════════════
03-02 14:35:16.313 DEBUG [EventManager a]  🛜 ⚡️ geofenceschange
03-02 14:35:16.353 DEBUG [EventManager a]  🛜 ⚡️ providerchange
03-02 14:35:16.358 DEBUG [HttpService startMonitoringConnectivityChanges] 
  🎾  Start monitoring connectivity changes
03-02 14:35:16.359 DEBUG [DeviceSettings startMonitoringPowerSaveChanges] 
  🎾  Start monitoring powersave changes
03-02 14:35:16.361 INFO [ActivityRecognitionService d] 
  🎾  Start motion-activity updates
03-02 14:35:16.365 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:16.415 DEBUG [SingleLocationRequest trySatisfyLastLocation] 📍  
╟─ age: 1057ms
╟─ maximumAge: 30000
╟─ desiredAccuracy: 20.0
╟─ meetsAccuracy: true
╟─ meetsStaleness: true

03-02 14:35:16.416 INFO [TSLocationManager a] 
╔═════════════════════════════════════════════
║ motionchange LocationResult: 1 (1058ms old)
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.5 et=+6d19h54m43s99ms alt=162.8000030517578 vAcc=1.023373 vel=0.0 sAcc=0.8], time: 1772442315358

03-02 14:35:16.416 INFO [Odometer b] 
  ℹ️  Update odometer: 88690.44 (± 656.27m)
03-02 14:35:16.416 INFO [TSLocationManager onSingleLocationResult] 
  🔵  MOTIONCHANGE isMoving=true df=0.0 — resetting short-term filter state
03-02 14:35:16.416 INFO [TSLocationManager onSingleLocationResult] 
  🔵  Acquired motionchange position, isMoving: true
03-02 14:35:16.423 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:16.423 DEBUG [EventManager a]  🛜 ⚡️ motionchange
03-02 14:35:16.423 INFO [TSLocationManager a] 
  🔴  Location-services: OFF
03-02 14:35:16.424 INFO [TSLocationManager requestLocationUpdates] 
  🎾  Location-services: ON
03-02 14:35:16.425 INFO [ActivityRecognitionService d] 
  🎾  Start motion-activity updates
03-02 14:35:16.491 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5232, eventCount: 1]
03-02 14:35:16.492 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.5 et=+6d19h54m43s99ms alt=162.8000030517578 vAcc=1.023373 vel=0.0 sAcc=0.8]
╟─ Age: 1134ms, time: 1772442315358

03-02 14:35:16.492 INFO [TrackingService b] 
  ℹ️  Distance from stoppedAtLocation: 139.42
03-02 14:35:16.492 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5232, eventCount: 0, sticky: true]
03-02 14:35:16.492 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:16.492 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.5, acc(prev)=1.5}
03-02 14:35:16.494 INFO [d0 a] 
  💾 ✅ ed957acc-1940-4c90-8c2a-7d67fd0929ea
03-02 14:35:16.495 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 1)
╠═════════════════════════════════════════════

03-02 14:35:16.502 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:16.514 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 87
03-02 14:35:16.526 DEBUG [d0 a] 
  ✅  Locked 1 records
03-02 14:35:16.527 INFO [HttpService a] 
  🔵  HTTP POST batch (1)
03-02 14:35:16.584 WARN [HttpService$e onResponse] 
  ⚠️  Response: 403, 
03-02 14:35:16.584 DEBUG [d0 b] 
  ✅  UNLOCKED (1)
03-02 14:35:16.585 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 87
03-02 14:35:16.595 DEBUG [TSLocationManagerActivity a] locationsettings
03-02 14:35:16.603 DEBUG [EventManager a]  🛜 ⚡️ http
03-02 14:35:16.630 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: false
03-02 14:35:16.632 INFO [TSScheduleManager oneShot] 
  ⏰ Scheduled OneShot: TERMINATE_EVENT in 10000ms (jobID: -1708771588)
03-02 14:35:16.657 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:16.658 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: TERMINATE_EVENT
03-02 14:35:16.673 DEBUG [TSLocationManagerActivity onDestroy] locationsettings
03-02 14:35:17.146 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: false
03-02 14:35:17.151 INFO [TSScheduleManager oneShot] 
  ⏰ Scheduled OneShot: TERMINATE_EVENT in 10000ms (jobID: -1708771588)
03-02 14:35:17.522 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:17.522 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: TERMINATE_EVENT
03-02 14:35:17.529 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: false
03-02 14:35:17.530 INFO [TSScheduleManager oneShot] 
  ⏰ Scheduled OneShot: TERMINATE_EVENT in 10000ms (jobID: -1708771588)
03-02 14:35:17.582 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:17.583 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: TERMINATE_EVENT
03-02 14:35:17.614 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: false
03-02 14:35:17.622 INFO [TSScheduleManager oneShot] 
  ⏰ Scheduled OneShot: TERMINATE_EVENT in 10000ms (jobID: -1708771588)
03-02 14:35:17.683 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: TERMINATE_EVENT
03-02 14:35:17.683 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:18.592 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: false
03-02 14:35:18.592 INFO [TSScheduleManager oneShot] 
  ⏰ Scheduled OneShot: TERMINATE_EVENT in 10000ms (jobID: -1708771588)
03-02 14:35:18.655 DEBUG [LifecycleManager d] ☯️ onWindowFocusChanged: true
03-02 14:35:18.656 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: TERMINATE_EVENT
03-02 14:35:23.066 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 1, eventCount: 1]
03-02 14:35:23.068 DEBUG [ActivityRecognitionService a] 
  🚘 ️DetectedActivity [type=TILTING, confidence=100]
03-02 14:35:23.070 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 1, eventCount: 0, sticky: false]
03-02 14:35:23.102 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 2, eventCount: 1]
03-02 14:35:23.103 DEBUG [ActivityRecognitionService a] 
  🚘 ️DetectedActivity [type=STILL, confidence=37]
03-02 14:35:23.117 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 2, eventCount: 0, sticky: false]
03-02 14:35:23.124 DEBUG [AbstractService a] 
  🎾  STOP_TIMEOUT [TrackingService  startId: 5233, eventCount: 1]
03-02 14:35:23.124 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5233, eventCount: 0, sticky: true]
03-02 14:35:23.133 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 3, eventCount: 1]
03-02 14:35:23.134 DEBUG [EventManager a]  🛜 ⚡️ activitychange
03-02 14:35:23.135 INFO [TSScheduleManager cancelOneShot] 
  ⏰ Cancel OneShot: STOP_TIMEOUT
03-02 14:35:23.138 INFO [l c] 
  🔴  Stop heartbeat
03-02 14:35:23.143 INFO [TrackingService a] 
  🔵  setPace: truetrue
03-02 14:35:23.143 INFO [ActivityRecognitionService a] 
╔═════════════════════════════════════════════
║ Motion Transition Result
╠═════════════════════════════════════════════
╟─ 🎾  ENTER: in_vehicle
╚═════════════════════════════════════════════
03-02 14:35:23.143 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 3, eventCount: 0, sticky: false]
03-02 14:35:23.147 DEBUG [SingleLocationRequest trySatisfyLastLocation] 📍  
╟─ age: 3775ms
╟─ maximumAge: 30000
╟─ desiredAccuracy: 20.0
╟─ meetsAccuracy: true
╟─ meetsStaleness: true

03-02 14:35:23.148 INFO [TSLocationManager a] 
╔═════════════════════════════════════════════
║ motionchange LocationResult: 2 (3776ms old)
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.625 et=+6d19h54m47s113ms alt=162.8000030517578 vAcc=1.0635158 vel=0.0 sAcc=0.6], time: 1772442319371

03-02 14:35:23.148 INFO [Odometer b] 
  ℹ️  Update odometer: 88690.44 (± 656.29m)
03-02 14:35:23.148 INFO [TSLocationManager onSingleLocationResult] 
  🔵  MOTIONCHANGE isMoving=true df=0.0 — resetting short-term filter state
03-02 14:35:23.148 INFO [TSLocationManager onSingleLocationResult] 
  🔵  Acquired motionchange position, isMoving: true
03-02 14:35:23.151 INFO [TSLocationManager a] 
  🔴  Location-services: OFF
03-02 14:35:23.152 INFO [TSLocationManager requestLocationUpdates] 
  🎾  Location-services: ON
03-02 14:35:23.153 DEBUG [AbstractService a] 
  🎾  motionchange [TrackingService  startId: 5234, eventCount: 1]
03-02 14:35:23.154 INFO [TrackingService l] 
╔═════════════════════════════════════════════
║ TrackingService motionchange: true
╠═════════════════════════════════════════════

03-02 14:35:23.154 INFO [d0 a] 
  💾 ✅ b861e755-0ef5-46a3-b378-3b4730ea46fb
03-02 14:35:23.154 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5234, eventCount: 0, sticky: true]
03-02 14:35:23.156 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 2)
╠═════════════════════════════════════════════

03-02 14:35:23.162 INFO [ActivityRecognitionService d] 
  🎾  Start motion-activity updates
03-02 14:35:23.163 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 4, eventCount: 1]
03-02 14:35:23.164 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:23.164 DEBUG [EventManager a]  🛜 ⚡️ motionchange
03-02 14:35:23.165 DEBUG [EventManager a]  🛜 ⚡️ activitychange
03-02 14:35:23.165 INFO [ActivityRecognitionService a] 
╔═════════════════════════════════════════════
║ Motion Transition Result
╠═════════════════════════════════════════════
╟─ 🎾  ENTER: in_vehicle
╚═════════════════════════════════════════════
03-02 14:35:23.165 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 4, eventCount: 0, sticky: false]
03-02 14:35:23.174 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5235, eventCount: 1]
03-02 14:35:23.175 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.625 et=+6d19h54m47s113ms alt=162.8000030517578 vAcc=1.0635158 vel=0.0 sAcc=0.6]
╟─ Age: 3802ms, time: 1772442319371

03-02 14:35:23.175 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:23.175 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.625, acc(prev)=1.5}
03-02 14:35:23.175 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5235, eventCount: 0, sticky: true]
03-02 14:35:23.176 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:23.176 INFO [d0 a] 
  💾 ✅ 020da855-d1df-4c8b-a614-946169ab3163
03-02 14:35:23.178 INFO [HttpService flush] 
  ℹ️  HttpService is busy
03-02 14:35:23.185 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 88
03-02 14:35:23.187 DEBUG [d0 a] 
  ✅  Locked 3 records
03-02 14:35:23.187 INFO [HttpService a] 
  🔵  HTTP POST batch (3)
03-02 14:35:23.272 WARN [HttpService$e onResponse] 
  ⚠️  Response: 422, 
03-02 14:35:23.272 DEBUG [EventManager a]  🛜 ⚡️ http
03-02 14:35:23.273 DEBUG [d0 b] 
  ✅  UNLOCKED (3)
03-02 14:35:23.276 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 88
03-02 14:35:23.374 DEBUG [AbstractService f] 
  ⚙️︎  ActivityRecognitionService.stopSelfResult(4): true
03-02 14:35:23.375 DEBUG [AbstractService onDestroy] 
  🔴  ActivityRecognitionService stopped
03-02 14:35:27.106 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5236, eventCount: 1]
03-02 14:35:27.108 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=96.11 et=+6d19h54m53s472ms alt=162.8000030517578 vAcc=1.0]
╟─ Age: 1377ms, time: 1772442325730

03-02 14:35:27.108 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:27.109 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=96.11, acc(prev)=1.625}
03-02 14:35:27.109 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5236, eventCount: 0, sticky: true]
03-02 14:35:27.110 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:27.111 INFO [d0 a] 
  💾 ✅ da1f67b8-133c-457e-bc23-f8c5fa9ae933
03-02 14:35:27.120 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 4)
╠═════════════════════════════════════════════

03-02 14:35:27.171 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 89
03-02 14:35:27.178 DEBUG [d0 a] 
  ✅  Locked 4 records
03-02 14:35:27.179 INFO [HttpService a] 
  🔵  HTTP POST batch (4)
03-02 14:35:27.279 WARN [HttpService$e onResponse] 
  ⚠️  Response: 422, 
03-02 14:35:27.280 DEBUG [EventManager a]  🛜 ⚡️ http
03-02 14:35:27.281 DEBUG [d0 b] 
  ✅  UNLOCKED (4)
03-02 14:35:27.286 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 89
03-02 14:35:33.231 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 1, eventCount: 1]
03-02 14:35:33.232 DEBUG [ActivityRecognitionService a] 
  🚘 ️DetectedActivity [type=TILTING, confidence=100]
03-02 14:35:33.232 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 1, eventCount: 0, sticky: false]
03-02 14:35:33.256 DEBUG [AbstractService a] 
  🎾  start [ActivityRecognitionService  startId: 2, eventCount: 1]
03-02 14:35:33.256 INFO [ActivityRecognitionService a] 
╔═════════════════════════════════════════════
║ Motion Transition Result
╠═════════════════════════════════════════════
╟─ 🎾  ENTER: in_vehicle
╚═════════════════════════════════════════════
03-02 14:35:33.256 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [ActivityRecognitionService startId: 2, eventCount: 0, sticky: false]
03-02 14:35:33.256 DEBUG [EventManager a]  🛜 ⚡️ activitychange
03-02 14:35:33.400 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5237, eventCount: 1]
03-02 14:35:33.401 INFO [TrackingService b] 
  ℹ️  Location availability: false
03-02 14:35:33.401 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5237, eventCount: 0, sticky: true]
03-02 14:35:33.422 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5238, eventCount: 1]
03-02 14:35:33.423 INFO [TrackingService b] 
  ℹ️  Location availability: true
03-02 14:35:33.423 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5238, eventCount: 0, sticky: true]
03-02 14:35:33.426 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5239, eventCount: 1]
03-02 14:35:33.426 DEBUG [TrackingService c] 
╔═════════════════════════════════════════════
║ TrackingService: LocationResult
╠═════════════════════════════════════════════
╟─ 📍  Location[fused 28.38****,77.29**** hAcc=1.6 et=+6d19h55m1s96ms alt=162.8000030517578 vAcc=1.0762452 vel=0.0 sAcc=0.5]
╟─ Age: 71ms, time: 1772442333355

03-02 14:35:33.427 DEBUG [AbstractService a] 
  ⚙️︎  FINISH [TrackingService startId: 5239, eventCount: 0, sticky: true]
03-02 14:35:33.427 DEBUG [TSLocationManager onLocationResult] 
╔═════════════════════════════════════════════
║ Process LocationResult
╠═════════════════════════════════════════════

03-02 14:35:33.427 DEBUG [TSLocationManager onLocationResult] LocationFilterResult: LocationFilterResult{decision=ADJUSTED, reason='kinematic-cap', selected=0.0, raw=0.0, effective=0.0, anomaly=false, acc(cur)=1.6, acc(prev)=96.11}
03-02 14:35:33.429 DEBUG [EventManager a]  🛜 ⚡️ location
03-02 14:35:33.429 INFO [d0 a] 
  💾 ✅ 8a1ab568-f31e-4ea6-b5ba-2b38705316b7
03-02 14:35:33.430 INFO [HttpService flush] 
╔═════════════════════════════════════════════
║ HTTP Service (count: 5)
╠═════════════════════════════════════════════

03-02 14:35:33.444 INFO [BackgroundTaskManager$a a] ⏳ startBackgroundTask: 90
03-02 14:35:33.449 DEBUG [d0 a] 
  ✅  Locked 5 records
03-02 14:35:33.449 INFO [HttpService a] 
  🔵  HTTP POST batch (5)
03-02 14:35:33.457 DEBUG [AbstractService f] 
  ⚙️︎  ActivityRecognitionService.stopSelfResult(2): true
03-02 14:35:33.457 DEBUG [AbstractService onDestroy] 
  🔴  ActivityRecognitionService stopped
03-02 14:35:33.534 WARN [HttpService$e onResponse] 
  ⚠️  Response: 422, 
03-02 14:35:33.535 DEBUG [EventManager a]  🛜 ⚡️ http
03-02 14:35:33.535 DEBUG [d0 b] 
  ✅  UNLOCKED (5)
03-02 14:35:33.537 INFO [BackgroundTaskManager$a k] ⏳ stopBackgroundTask: 90
03-02 14:35:38.383 DEBUG [AbstractService a] 
  🎾  start [TrackingService  startId: 5240, eventCount: 1]
03-02 14:35:38.384 INFO [TrackingService b] 
  ℹ️  Location availability: false

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions