From a4ca0d19135ace022ca14f46cf6001ec1131c18a Mon Sep 17 00:00:00 2001 From: wengki81 Date: Tue, 17 Jun 2025 18:23:47 +0800 Subject: [PATCH] Debuging added --- .../plugin/geolocation/DumonGeolocation.kt | 7 +++++- .../geolocation/gps/GpsStatusManager.kt | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) 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 3db143e..fe25517 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/DumonGeolocation.kt @@ -78,7 +78,12 @@ class DumonGeolocation : Plugin() { gpsManager = GpsStatusManager( context, onSatelliteStatusUpdate = { satelliteStatus = it }, - onLocationUpdate = { location, isMocked -> + onLocationUpdate = onLocationUpdate@{ location, isMocked -> + if (location.latitude == 0.0 && location.longitude == 0.0) { + Log.w("GPS_LOCATION", "Ignored location update: (0.0, 0.0)") + return@onLocationUpdate + } + latestLatitude = location.latitude latestLongitude = location.longitude latestAccuracy = location.accuracy.toDouble() diff --git a/android/src/main/java/com/dumon/plugin/geolocation/gps/GpsStatusManager.kt b/android/src/main/java/com/dumon/plugin/geolocation/gps/GpsStatusManager.kt index 4240646..451bc8b 100644 --- a/android/src/main/java/com/dumon/plugin/geolocation/gps/GpsStatusManager.kt +++ b/android/src/main/java/com/dumon/plugin/geolocation/gps/GpsStatusManager.kt @@ -80,6 +80,13 @@ class GpsStatusManager( return } + if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + Log.w("GPS_STATUS", "GPS Provider not enabled") + } + if (!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { + Log.w("GPS_STATUS", "Network Provider not enabled") + } + locationManager.registerGnssStatusCallback(gnssStatusCallback, null) locationManager.requestLocationUpdates( @@ -97,6 +104,23 @@ class GpsStatusManager( ) Log.d("GPS_STATUS", "GPS + Network location tracking started") + + // 🔥 Fallback: coba ambil lokasi terakhir + val lastKnown = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) + ?: locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER) + + lastKnown?.let { location -> + if (location.latitude != 0.0 && location.longitude != 0.0) { + val isMocked = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + location.isMock + } else { + location.isFromMockProvider + } + Log.d("GPS_STATUS", "Using last known location as fallback") + onLocationUpdate(location, isMocked) + } + } + } catch (e: SecurityException) { Log.e("GPS_STATUS", "SecurityException", e) }