From 120b2a4ee7a0091d8633c494d27a22098ec6275f Mon Sep 17 00:00:00 2001 From: wengki81 Date: Tue, 14 Oct 2025 21:34:17 +0800 Subject: [PATCH] updated 141025-01 --- README.md | 1 + .../java/com/dumon/plugin/geolocation/DumonGeolocation.kt | 2 ++ documentation/PLUGIN_REFERENCE.md | 1 + src/definitions.ts | 1 + src/web.ts | 6 ++++++ 5 files changed, 11 insertions(+) diff --git a/README.md b/README.md index 62c3882..fb2be98 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,7 @@ interface PositioningData { acceleration: number; directionRad: number; isMocked: boolean; + mode: 'normal' | 'driving'; predicted?: boolean; } ``` 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 6525f9b..5b091aa 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt @@ -535,6 +535,7 @@ class DumonGeolocation : Plugin() { put("longitude", fix.longitude) put("accuracy", fix.accuracy) put("isMocked", fix.isMocked) + put("mode", "normal") put("speed", fix.speed) put("acceleration", fix.acceleration) put("directionRad", fix.directionRad) @@ -737,6 +738,7 @@ class DumonGeolocation : Plugin() { obj.put("longitude", outLon) obj.put("accuracy", latestAccuracy) obj.put("isMocked", isMockedLocation) + obj.put("mode", if (currentTrackingMode == GpsTrackingMode.DRIVING) "driving" else "normal") // Always provide IMU-related fields to match TS definitions val speedVal = latestImu?.speed ?: 0f diff --git a/documentation/PLUGIN_REFERENCE.md b/documentation/PLUGIN_REFERENCE.md index 04b4744..2509353 100644 --- a/documentation/PLUGIN_REFERENCE.md +++ b/documentation/PLUGIN_REFERENCE.md @@ -29,6 +29,7 @@ export interface PositioningData { acceleration: number; // m/s^2 (magnitude IMU) directionRad: number; // radian, relatif utara isMocked: boolean; // lokasi terdeteksi palsu + mode: 'normal' | 'driving'; // mode tracking aktif saat emisi predicted?: boolean; // true jika posisi diproyeksikan ke depan } diff --git a/src/definitions.ts b/src/definitions.ts index d8b96ca..1d5979f 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -61,6 +61,7 @@ export interface PositioningData { acceleration: number; directionRad: number; isMocked: boolean; + mode: 'normal' | 'driving'; predicted?: boolean; } diff --git a/src/web.ts b/src/web.ts index 13ad4ba..5fdcc28 100644 --- a/src/web.ts +++ b/src/web.ts @@ -2,6 +2,7 @@ import { WebPlugin } from '@capacitor/core'; import type { PositioningData, DumonGeoOptions, SatelliteStatus } from './definitions'; export class DumonGeolocationWeb extends WebPlugin { + private _mode: 'normal' | 'driving' = 'normal'; async startPositioning(): Promise { console.log('DumonGeolocationWeb: startPositioning() called (no-op)'); } @@ -22,6 +23,7 @@ export class DumonGeolocationWeb extends WebPlugin { acceleration: 0, directionRad: 0, isMocked: false, + mode: this._mode, }; } @@ -49,6 +51,10 @@ export class DumonGeolocationWeb extends WebPlugin { // No-op on web } + async setGpsMode(options: { mode: 'normal' | 'driving' }): Promise { + this._mode = options?.mode === 'driving' ? 'driving' : 'normal'; + } + async getGnssStatus(): Promise { return null; }