diff options
| -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"); |