diff --git a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt index a5b25ce..94d6dca 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt @@ -291,13 +291,17 @@ class DumonGeolocation : Plugin() { } private fun adjustIntervalAndSensorRate(speed: Float) { - val targetMode = if (speed > 3.0f) GpsTrackingMode.DRIVING else GpsTrackingMode.NORMAL + val targetInterval = when { + speed > 5f -> 3000L + speed > 1.5f -> 8000L + speed > 0.3f -> 20000L + else -> 30000L + } - if (currentTrackingMode != targetMode) { - currentTrackingMode = targetMode - gpsManager?.stop() - gpsManager?.start(currentTrackingMode) - Log.d("DUMON_GEOLOCATION", "Switched GPS mode to $currentTrackingMode") + if (emitIntervalMs != targetInterval) { + emitIntervalMs = targetInterval + gpsManager?.setPollingInterval(targetInterval) + Log.d("DUMON_GEOLOCATION", "Auto-set emitIntervalMs = $emitIntervalMs ms") } imuManager?.setSensorDelayBySpeed(speed)