adaptive_location_tracker 0.1.5
adaptive_location_tracker: ^0.1.5 copied to clipboard
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 preventSecurityExceptioncrashes when exact alarm scheduling permissions are missing or denied. - New (Testing): Added comprehensive JUnit unit tests for native
KalmanLocationFiltercoordinates 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_NOTIFICATIONSin the manifest to allow foreground service notifications on modern devices. - Fix (Legacy Compatibility): Replaced modern
getSystemServiceclass lookup calls with backward-compatible name lookups, eliminatingNoSuchMethodErrorcrashes on Android 5.0/5.1. - Fix (Crash Prevention): Offloaded synchronous network and database sync tasks to a background thread to prevent fatal
NetworkOnMainThreadExceptioncrashes on the Main thread. - Improved (Branding): Enabled dynamic notification icon support (looks for
notification_icondrawable first, falling back to the application's launcher icon). - Improved (API Safety): Added version-safe checks for
PendingIntentflag creation.
0.1.3 #
- Docs: Updated root documentation to officially list required permissions (such as
ACCESS_NETWORK_STATEandINTERNET) and bump installation guides to reflect release configurations.
0.1.2 #
- Fix: Added missing
android.permission.ACCESS_NETWORK_STATEto the plugin manifest soLocationServicecan safely useConnectivityManagerwithout 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_FAILEDand keeps tracking active. - New: Surfaced native location startup and availability failures to Dart through
eventsStreamwith 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
extraDatakeys, checkout result events, and HTTP vs WebSocket reliability. - Internal: Updated Android plugin namespace/package away from the placeholder
com.exampleidentity.
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
reportLocationUrlto 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
extraDatain offline database. This ensures that when syncing offline location points, they retain theextraDatametadata (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_datacolumn.
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_RECOGNITIONsupport 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:
FusedLocationManagerwrapper for cleaner code and better configuration. - Updated: Documentation with battery optimization warnings and permission details.
0.0.2 #
- Added WebSocket support (
isWebSocketflag). - Added support for passing
extraDatato be included in location payloads. - Updated
start()method to return aFuture<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.