Mikkeli Matlock 1618cfeb26 feat(04-01): implement lifecycle-aware GPS engine with precision switching
- Add WidgetsBindingObserver mixin for app lifecycle tracking
- Add overlay provider reference for background decision-making
- Add state tracking: current accuracy, first-fix status, foreground/GPS active state
- Fix default ProcessedGpsData to non-const with timestamp
- Register lifecycle observer in initialize(), remove in dispose()
- Set first-fix state and time after initial GPS fix
- Update position handler to include timestamp in ProcessedGpsData
- Implement precision switching with hysteresis (8/12 km/h thresholds)
- Gate precision switching until 5s after first fix
- Implement lifecycle handlers: paused (7s grace period) and resumed (restart GPS)
- Add grace period expiration with race condition protection (re-check overlay)
- Add GPS stop/restart methods preserving last known data
- Implement conditional wake lock: GPS active AND (overlay OR foreground)
- Cancel all timers in dispose() including background grace period
- Remove unnecessary flutter/foundation import (widgets provides ChangeNotifier)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 09:02:33 +09:00

GPS Speedometer

A GPS Speedometer aimed at Android on Motorcycle / Bicycle applications. Created with the help of Claude Code

Features

Core Functionality

  • Real-time speed display using GPS
  • Maybe also direction display using GPS
  • Good floating window / split screen support(hopefully)

Customizable Settings

  • Speed Units: mph, km/h, knots (with convenient unit selector buttons)
  • Theme: Light/Dark mode (expandable for custom themes)

Technical Specifications

  • Target Platform: Android (primary)
  • Target Device: Mobile phones and tablets
  • GPS Requirements: Location permissions required
  • Offline Capability: Full functionality without internet

Architecture Design

To be updated

Permissions Required

  • ACCESS_FINE_LOCATION - For high-precision GPS tracking
  • ACCESS_COARSE_LOCATION - Fallback location access

Getting Started

Prerequisites

  • Flutter SDK
  • Android development environment
  • Physical device recommended (GPS simulation limited in emulator)

Installation

  1. Clone the repository
  2. Run flutter pub get
  3. Connect Android device or start emulator
  4. Run flutter run

Development

  • flutter run - Run the app in development mode
  • flutter build apk - Build APK for Android
  • flutter test - Run unit tests
S
Description
Simple GPS speedometer.
Readme MIT 1.3 MiB
2026-08-27 11:54:50 +00:00
Languages
HTML 49.4%
Dart 31.5%
C++ 9.6%
CMake 7.5%
Swift 0.9%
Other 1%