diff options
| author | 2009-07-14 15:46:26 -0700 | |
|---|---|---|
| committer | 2009-09-17 13:56:36 -0400 | |
| commit | 2d2078aa1d6e31063f565a20b717f3b8908fff02 (patch) | |
| tree | 84a03e58a63ff6f2f4e79c512081e0f57b6b1fd3 | |
| parent | 94ef49918240cedaa559ad7f7752d20cf4d1668b (diff) | |
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 <lockwood@android.com>
| -rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index af60556ec4fc..f6a1be73328f 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<PendingIntent> 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"); |