From 22c6277d6873c05f4cdcc28f9f4902688becce62 Mon Sep 17 00:00:00 2001 From: wengki81 Date: Sat, 21 Jun 2025 01:11:06 +0800 Subject: [PATCH] Realtime gps optimized for efficiency --- .../dumon/plugin/geolocation/DumonGeolocation.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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)