From 77fa630b9db08d2c6e1a73a35b134252c2559376 Mon Sep 17 00:00:00 2001 From: CoderKang Date: Fri, 19 Sep 2025 01:54:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96GPS=E5=9D=90=E6=A0=87?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BD=BF=E7=94=A8?= =?UTF-8?q?strtod=E5=AE=9E=E7=8E=B0=E6=97=A0=E5=BC=82=E5=B8=B8=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/0002-frameworks-base-gnss.patch | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/android-15.0.0_r36/frameworks/base/0002-frameworks-base-gnss.patch b/android-15.0.0_r36/frameworks/base/0002-frameworks-base-gnss.patch index 7cfee96..4851802 100644 --- a/android-15.0.0_r36/frameworks/base/0002-frameworks-base-gnss.patch +++ b/android-15.0.0_r36/frameworks/base/0002-frameworks-base-gnss.patch @@ -18,7 +18,7 @@ index a95a4a8..10eae12 100644 static jclass class_gnssPowerStats; -@@ -75,6 +78,75 @@ static jmethodID method_isInEmergencySession; +@@ -75,6 +78,79 @@ static jmethodID method_isInEmergencySession; static jmethodID method_gnssPowerStatsCtor; static jmethodID method_setSubHalPowerIndicationCapabilities; @@ -65,10 +65,14 @@ index a95a4a8..10eae12 100644 + iss >> latStr >> lonStr; + } + -+ try { -+ double lat = std::stod(latStr); -+ double lon = std::stod(lonStr); -+ ++ // Use strtod for exception-free parsing ++ char* latEnd; ++ char* lonEnd; ++ double lat = strtod(latStr.c_str(), &latEnd); ++ double lon = strtod(lonStr.c_str(), &lonEnd); ++ ++ // Check if parsing was successful (no leftover characters) ++ if (*latEnd == '\0' && *lonEnd == '\0') { + // Validate coordinates + if (lat >= -90.0 && lat <= 90.0 && lon >= -180.0 && lon <= 180.0) { + customLatitude = lat; @@ -81,8 +85,8 @@ index a95a4a8..10eae12 100644 + } else { + ALOGE("Invalid GPS coordinates: lat=%.6f, lon=%.6f", lat, lon); + } -+ } catch (const std::exception& e) { -+ ALOGE("Failed to parse GPS coordinates: %s", e.what()); ++ } else { ++ ALOGE("Failed to parse GPS coordinates from file"); + } + } + @@ -94,7 +98,7 @@ index a95a4a8..10eae12 100644 using android::OK; using android::sp; using android::status_t; -@@ -377,6 +449,9 @@ static jboolean android_location_gnss_hal_GnssNative_set_position_mode( +@@ -377,6 +453,9 @@ static jboolean android_location_gnss_hal_GnssNative_set_position_mode( } static jboolean android_location_gnss_hal_GnssNative_start(JNIEnv* /* env */, jclass) { @@ -104,7 +108,7 @@ index a95a4a8..10eae12 100644 return gnssHal->start(); } -@@ -457,12 +532,24 @@ static void android_location_gnss_hal_GnssNative_inject_best_location( +@@ -457,12 +536,24 @@ static void android_location_gnss_hal_GnssNative_inject_best_location( jfloat speedAccuracyMetersPerSecond, jfloat bearingAccuracyDegrees, jlong timestamp, jint elapsedRealtimeFlags, jlong elapsedRealtimeNanos, jdouble elapsedRealtimeUncertaintyNanos) { @@ -135,7 +139,7 @@ index a95a4a8..10eae12 100644 } static void android_location_gnss_hal_GnssNative_inject_location( -@@ -472,11 +559,22 @@ static void android_location_gnss_hal_GnssNative_inject_location( +@@ -472,11 +563,22 @@ static void android_location_gnss_hal_GnssNative_inject_location( jfloat speedAccuracyMetersPerSecond, jfloat bearingAccuracyDegrees, jlong timestamp, jint elapsedRealtimeFlags, jlong elapsedRealtimeNanos, jdouble elapsedRealtimeUncertaintyNanos) {