* commit 'c1bb4bfb2832f0be3ea2982dd834af1449e03806': Last position improvements for GeofenceManager
This commit is contained in:
@@ -1414,9 +1414,8 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
|
|||||||
|
|
||||||
long now = SystemClock.elapsedRealtime();
|
long now = SystemClock.elapsedRealtime();
|
||||||
String provider = (passive ? LocationManager.PASSIVE_PROVIDER : location.getProvider());
|
String provider = (passive ? LocationManager.PASSIVE_PROVIDER : location.getProvider());
|
||||||
ArrayList<UpdateRecord> records = mRecordsByProvider.get(provider);
|
|
||||||
if (records == null || records.size() == 0) return;
|
|
||||||
|
|
||||||
|
// Skip if the provider is unknown.
|
||||||
LocationProviderInterface p = mProvidersByName.get(provider);
|
LocationProviderInterface p = mProvidersByName.get(provider);
|
||||||
if (p == null) return;
|
if (p == null) return;
|
||||||
|
|
||||||
@@ -1437,6 +1436,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
|
|||||||
}
|
}
|
||||||
lastLocation.set(location);
|
lastLocation.set(location);
|
||||||
|
|
||||||
|
// Skip if there are no UpdateRecords for this provider.
|
||||||
|
ArrayList<UpdateRecord> records = mRecordsByProvider.get(provider);
|
||||||
|
if (records == null || records.size() == 0) return;
|
||||||
|
|
||||||
// Fetch coarse location
|
// Fetch coarse location
|
||||||
Location coarseLocation = null;
|
Location coarseLocation = null;
|
||||||
if (noGPSLocation != null && !noGPSLocation.equals(lastNoGPSLocation)) {
|
if (noGPSLocation != null && !noGPSLocation.equals(lastNoGPSLocation)) {
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
|
|||||||
private Object mLock = new Object();
|
private Object mLock = new Object();
|
||||||
|
|
||||||
// access to members below is synchronized on mLock
|
// access to members below is synchronized on mLock
|
||||||
private Location mLastLocation;
|
|
||||||
private List<GeofenceState> mFences = new LinkedList<GeofenceState>();
|
private List<GeofenceState> mFences = new LinkedList<GeofenceState>();
|
||||||
|
|
||||||
public GeofenceManager(Context context, LocationBlacklist blacklist) {
|
public GeofenceManager(Context context, LocationBlacklist blacklist) {
|
||||||
@@ -77,7 +76,8 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
|
|||||||
|
|
||||||
public void addFence(LocationRequest request, Geofence geofence, PendingIntent intent, int uid,
|
public void addFence(LocationRequest request, Geofence geofence, PendingIntent intent, int uid,
|
||||||
String packageName) {
|
String packageName) {
|
||||||
GeofenceState state = new GeofenceState(geofence, mLastLocation,
|
Location lastLocation = mLocationManager.getLastLocation();
|
||||||
|
GeofenceState state = new GeofenceState(geofence, lastLocation,
|
||||||
request.getExpireAt(), packageName, intent);
|
request.getExpireAt(), packageName, intent);
|
||||||
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
@@ -146,8 +146,6 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
|
|||||||
List<PendingIntent> exitIntents = new LinkedList<PendingIntent>();
|
List<PendingIntent> exitIntents = new LinkedList<PendingIntent>();
|
||||||
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mLastLocation = location;
|
|
||||||
|
|
||||||
removeExpiredFencesLocked();
|
removeExpiredFencesLocked();
|
||||||
|
|
||||||
for (GeofenceState state : mFences) {
|
for (GeofenceState state : mFences) {
|
||||||
|
|||||||
Reference in New Issue
Block a user