feat(04-01): add timestamp to ProcessedGpsData and precision/lifecycle constants

- Add timestamp field to ProcessedGpsData with copyWith support
- Add precision switching thresholds: 3.33 m/s (12 km/h) up, 2.22 m/s (8 km/h) down
- Add PRECISION_SWITCH_FIRST_FIX_DELAY (5s) to prevent early switching
- Add BACKGROUND_GRACE_PERIOD (7s) for lifecycle-aware GPS management
- Mark GPS_GRACE_PERIOD as deprecated in favor of BACKGROUND_GRACE_PERIOD
- Change GpsService.positionStream to createPositionStream() with dynamic accuracy
- Keep deprecated positionStream getter for backward compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Mikkeli Matlock
2026-02-12 09:00:10 +09:00
parent 40c74677be
commit c4d4032b6b
4 changed files with 29 additions and 3 deletions
+12 -3
View File
@@ -6,15 +6,24 @@ import 'config/gps_constants.dart';
class GpsService {
static double? _lastValidHeading;
static Stream<Position> get positionStream {
/// Create a position stream with dynamic accuracy setting
static Stream<Position> createPositionStream({
LocationAccuracy accuracy = LocationAccuracy.high,
}) {
return Geolocator.getPositionStream(
locationSettings: const LocationSettings(
accuracy: LocationAccuracy.bestForNavigation,
locationSettings: LocationSettings(
accuracy: accuracy,
distanceFilter: 0,
),
);
}
/// Deprecated: Use createPositionStream() instead
@Deprecated('Use createPositionStream(accuracy: LocationAccuracy.bestForNavigation) instead')
static Stream<Position> get positionStream {
return createPositionStream(accuracy: LocationAccuracy.bestForNavigation);
}
static Future<bool> requestPermissions() async {
final permission = await Permission.locationWhenInUse.request();
return permission.isGranted;