diff options
| author | 2025-01-09 09:35:08 -0800 | |
|---|---|---|
| committer | 2025-01-09 09:35:08 -0800 | |
| commit | 0928cdfeced0242ea702e42e8f95e4e3e9c53664 (patch) | |
| tree | 865b874248efba35b87619a0820a5f6523bdd159 | |
| parent | b55dba6fc11f40995401894de4854ab55719f225 (diff) | |
| parent | a31ee7bbeca5ff2c0c8380863f894c6df12c3c8b (diff) | |
Merge "LocationFudger: Avoid division by zero" into main am: 55f4c22026 am: a31ee7bbec
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3440041
Change-Id: I28eee9b002e3502bc9c1d2deb3980f6edca875c0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/location/fudger/LocationFudger.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/location/fudger/LocationFudger.java b/services/core/java/com/android/server/location/fudger/LocationFudger.java index 27577641ad1d..28e21b71dcc9 100644 --- a/services/core/java/com/android/server/location/fudger/LocationFudger.java +++ b/services/core/java/com/android/server/location/fudger/LocationFudger.java @@ -302,6 +302,15 @@ public class LocationFudger { // requires latitude since longitudinal distances change with distance from equator. private static double metersToDegreesLongitude(double distance, double lat) { - return distance / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR / Math.cos(Math.toRadians(lat)); + // Needed to convert from longitude distance to longitude degree. + // X meters near the poles is more degrees than at the equator. + double cosLat = Math.cos(Math.toRadians(lat)); + // If we are right on top of the pole, the degree is always 0. + // We return a very small value instead to avoid divide by zero errors + // later on. + if (cosLat == 0.0) { + return 0.0001; + } + return distance / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR / cosLat; } } |