From 2d2078aa1d6e31063f565a20b717f3b8908fff02 Mon Sep 17 00:00:00 2001 From: "Yusuf T. Mobile" Date: Tue, 14 Jul 2009 15:46:26 -0700 Subject: [PATCH] LocationManagerService: Take fix accuracy into account in proximity zone logic. Fixes http://code.google.com/p/android/issues/detail?id=2002 Change-Id: If2b0665c556269279c5813f2254f9624a556bd92 Signed-off-by: Mike Lockwood --- .../java/com/android/server/LocationManagerService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index af60556ec4fc3..f6a1be73328fb 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -1069,13 +1069,13 @@ public class LocationManagerService extends ILocationManager.Stub implements Run return mIntent; } - boolean isInProximity(double latitude, double longitude) { + boolean isInProximity(double latitude, double longitude, float accuracy) { Location loc = new Location(""); loc.setLatitude(latitude); loc.setLongitude(longitude); double radius = loc.distanceTo(mLocation); - return radius <= mRadius; + return radius <= Math.max(mRadius,accuracy); } @Override @@ -1115,6 +1115,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run long now = System.currentTimeMillis(); double latitude = loc.getLatitude(); double longitude = loc.getLongitude(); + float accuracy = loc.getAccuracy(); ArrayList intentsToRemove = null; for (ProximityAlert alert : mProximityAlerts.values()) { @@ -1124,7 +1125,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run if ((expiration == -1) || (now <= expiration)) { boolean entered = mProximitiesEntered.contains(alert); boolean inProximity = - alert.isInProximity(latitude, longitude); + alert.isInProximity(latitude, longitude, accuracy); if (!entered && inProximity) { if (LOCAL_LOGV) { Log.v(TAG, "Entered alert");