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 3cd1724..3454c01 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt @@ -68,8 +68,8 @@ class DumonGeolocation : Plugin() { private val directionChangeThreshold = 0.17f // ~10 deg // private val emitIntervalMs: Long = 500L - private val emitIntervalMs: Long = 1000L // hard debounce -// private val emitIntervalMs: Long = 500L + private var emitIntervalMs: Long = 1000L // hard debounce + // private val emitIntervalMs: Long = 500L private var motionState: String = "idle" // 'idle', 'driving', 'mocked' @@ -220,6 +220,14 @@ class DumonGeolocation : Plugin() { call.resolve() } + @PluginMethod + fun setEmitInterval(call: PluginCall) { + val intervalMs = call.getInt("intervalMs") ?: 1000 + emitIntervalMs = intervalMs.toLong().coerceIn(250L, 30000L) // batas antara 0.25s – 30s + Log.d("DUMON_GEOLOCATION", "Emit interval set to $emitIntervalMs ms") + call.resolve() + } + @PermissionCallback private fun onPermissionResult(call: PluginCall) { val locationStatus = PermissionUtils.getPermissionStatus( diff --git a/src/definitions.ts b/src/definitions.ts index 71f8356..69c5bcd 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -74,6 +74,7 @@ export interface DumonGeolocationPlugin { stopPositioning(): Promise; getLatestPosition(): Promise; checkAndRequestPermissions(): Promise; + setEmitInterval(options: { intervalMs: number }): Promise; configureEdgeToEdge(options: { bgColor: string;