adaptive_location_tracker 0.1.5 copy "adaptive_location_tracker: ^0.1.5" to clipboard
adaptive_location_tracker: ^0.1.5 copied to clipboard

PlatformAndroid

A battery-efficient adaptive location tracker with offline sync, Kalman filtering, and foreground service support.

0.1.5 #

  • Fix (Android 13/14+): Replaced exact alarm calls (setExact / setExactAndAllowWhileIdle) with Doze-safe non-exact alarm calls (set / setAndAllowWhileIdle) to prevent SecurityException crashes when exact alarm scheduling permissions are missing or denied.
  • New (Testing): Added comprehensive JUnit unit tests for native KalmanLocationFilter coordinates smoothing and state reset behaviors.
  • New (Testing): Added Dart unit tests to verify sequential event delivery (location, trip_state) on the event channel stream.
  • Internal: Removed unused empty template package directories (com.example) from native Kotlin files.

0.1.4 #

  • Fix (Android 13+): Declared android.permission.POST_NOTIFICATIONS in the manifest to allow foreground service notifications on modern devices.
  • Fix (Legacy Compatibility): Replaced modern getSystemService class lookup calls with backward-compatible name lookups, eliminating NoSuchMethodError crashes on Android 5.0/5.1.
  • Fix (Crash Prevention): Offloaded synchronous network and database sync tasks to a background thread to prevent fatal NetworkOnMainThreadException crashes on the Main thread.
  • Improved (Branding): Enabled dynamic notification icon support (looks for notification_icon drawable first, falling back to the application's launcher icon).
  • Improved (API Safety): Added version-safe checks for PendingIntent flag creation.

0.1.3 #

  • Docs: Updated root documentation to officially list required permissions (such as ACCESS_NETWORK_STATE and INTERNET) and bump installation guides to reflect release configurations.

0.1.2 #

  • Fix: Added missing android.permission.ACCESS_NETWORK_STATE to the plugin manifest so LocationService can safely use ConnectivityManager without crashing on startup.

0.1.1 #

  • Fix: Corrected Android foreground-service restart handling after task removal so fallback restart no longer replays stale state over an already running service.
  • Fix: Persisted and restored additional service state needed for stationary tracking recovery across restarts.
  • Fix: Checkout now only stops the service after a verified flush; failed checkout emits CHECKOUT_FLUSH_FAILED and keeps tracking active.
  • New: Surfaced native location startup and availability failures to Dart through eventsStream with structured error codes.
  • Improved: Example app now reacts to structured events and handles checkout as an asynchronous flow.
  • Improved: README now documents payload contract, reserved extraData keys, checkout result events, and HTTP vs WebSocket reliability.
  • Internal: Updated Android plugin namespace/package away from the placeholder com.example identity.

0.1.0 #

  • Major Update: Complete port of advanced tracking logic from the JCB architecture.
  • New: Sophisticated state machine with Spiderweb Prevention and Breakout Detection.
  • New: Batch Syncing (efficiently sends 20-100 points per request) with exponential backoff.
  • New: GPS Status Reporting via reportLocationUrl to notify backend when user toggles location on/off.
  • New: Checkout Flow (checkout() method) to safely flush all data before stopping.
  • New: WebSocket Support fully implemented in Kotlin with auto-reconnect and offline buffering.
  • Improved: Android 14 compatibility with explicit foreground service types.
  • Improved: Persistence of tracking state across service restarts.
  • Example: Updated example app with full permission management and checkout testing.

0.0.7 #

  • Update: Updated example app URL.

0.0.6 #

  • New (Robustness): Implemented "Store-and-Forward" architecture. All locations are now saved to a local FIFO queue before sending, ensuring no data loss even in poor network conditions.
  • New: Hybrid WebSocket Logic. Attempts direct zero-latency send via WebSocket if connected, correctly falling back to the reliable DB queue if it fails.
  • Improved: Sync Scheduler now uses Head-of-Line Blocking with infinite retry to guarantee chronological order of delivery.
  • Improved: Automatic database cleanup when the tracking service is stopped.

0.0.5 #

  • Fix: Persist extraData in offline database. This ensures that when syncing offline location points, they retain the extraData metadata (e.g., job IDs) that was active when they were recorded, rather than using the currently active metadata.
  • Internal: Database migration from version 2 to 3 to add extra_data column.

0.0.4 #

  • Fix: Changed payload timestamp to use System.currentTimeMillis() instead of GPS time. This resolves issues with incorrect timestamps on certain devices/providers.

0.0.3 #

  • Breaking Change: Internal tracking engine completely replaced with a robust State Machine.
  • New: Added ACTIVITY_RECOGNITION support for battery-efficient motion detection.
  • New: "Lock" mechanism for stationary states to prevent GPS drift/spiderwebbing.
  • New: "Breakout" logic to ensure movement is verified before tracking resumes.
  • Improved: FusedLocationManager wrapper for cleaner code and better configuration.
  • Updated: Documentation with battery optimization warnings and permission details.

0.0.2 #

  • Added WebSocket support (isWebSocket flag).
  • Added support for passing extraData to be included in location payloads.
  • Updated start() method to return a Future<bool> for success/failure status.
  • Improved example app with full test bench.

0.0.1 #

  • Initial release.
  • Added background location tracking with foreground service.
  • Implemented adaptive Kalman Filter for location smoothing.
  • Added offline storage (SQLite) with auto-sync capability.
  • Added configurable HTTP endpoint and headers.
  • Added outlier detection and battery efficiency optimizations.
4
likes
160
points
407
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A battery-efficient adaptive location tracker with offline sync, Kalman filtering, and foreground service support.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on adaptive_location_tracker

Packages that implement adaptive_location_tracker