summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yusuf T. Mobile <yusuf.saib@T-Mobile.com> 2009-07-14 15:46:26 -0700
committer Mike Lockwood <lockwood@android.com> 2009-09-17 13:56:36 -0400
commit2d2078aa1d6e31063f565a20b717f3b8908fff02 (patch)
tree84a03e58a63ff6f2f4e79c512081e0f57b6b1fd3
parent94ef49918240cedaa559ad7f7752d20cf4d1668b (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.java7
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");