More Location Manager cleanup:

Move LocationCollector support out of GpsLocationProvider.
Don't disable GPS when screen is off.

Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
Mike Lockwood
2009-04-17 18:03:44 -04:00
parent 981980e5da
commit 98cb667974
2 changed files with 12 additions and 62 deletions

View File

@@ -126,7 +126,6 @@ public class LocationManagerService extends ILocationManager.Stub {
private final Context mContext;
private GpsLocationProvider mGpsLocationProvider;
private boolean mGpsNavigating;
private LocationProviderProxy mNetworkLocationProvider;
private IGeocodeProvider mGeocodeProvider;
private LocationWorkerHandler mLocationHandler;
@@ -600,12 +599,7 @@ public class LocationManagerService extends ILocationManager.Stub {
"Installing location collectors outside of the system is not supported");
}
synchronized (mLock) {
mCollector = collector;
if (mGpsLocationProvider != null) {
mGpsLocationProvider.setLocationCollector(mCollector);
}
}
mCollector = collector;
}
public void setGeocodeProvider(IGeocodeProvider provider) {
@@ -805,9 +799,6 @@ public class LocationManagerService extends ILocationManager.Stub {
}
} else {
p.enableLocationTracking(false);
if (p == mGpsLocationProvider) {
mGpsNavigating = false;
}
p.disable();
updateWakelockStatusLocked(mScreenOn);
}
@@ -1612,6 +1603,16 @@ public class LocationManagerService extends ILocationManager.Stub {
synchronized (mLock) {
Location location = (Location) msg.obj;
if (mCollector != null &&
LocationManager.GPS_PROVIDER.equals(location.getProvider())) {
try {
mCollector.updateLocation(location);
} catch (RemoteException e) {
Log.w(TAG, "mCollector.updateLocation failed");
}
}
String provider = location.getProvider();
if (!isAllowedBySettingsLocked(provider)) {
return;
@@ -1767,10 +1768,7 @@ public class LocationManagerService extends ILocationManager.Stub {
false);
synchronized (mLock) {
if (enabled) {
mGpsNavigating = true;
} else {
mGpsNavigating = false;
if (!enabled) {
// When GPS is disabled, we are OK to release wake-lock
mWakeLockGpsReceived = true;
}
@@ -1798,12 +1796,6 @@ public class LocationManagerService extends ILocationManager.Stub {
if (mGpsLocationProvider != null && mGpsLocationProvider.isLocationTracking()) {
needsLock = true;
minTime = Math.min(mGpsLocationProvider.getMinTime(), minTime);
if (screenOn) {
startGpsLocked();
} else if (mScreenOn && !screenOn) {
// We just turned the screen off so stop navigating
stopGpsLocked();
}
}
mScreenOn = screenOn;
@@ -1869,9 +1861,6 @@ public class LocationManagerService extends ILocationManager.Stub {
mWakeLockAcquireTime = SystemClock.elapsedRealtime();
log("Acquired wakelock");
// Start the gps provider
startGpsLocked();
// Acquire cell lock
if (mCellWakeLockAcquired) {
// Lock is already acquired
@@ -1902,22 +1891,6 @@ public class LocationManagerService extends ILocationManager.Stub {
}
}
private void startGpsLocked() {
boolean gpsActive = (mGpsLocationProvider != null)
&& mGpsLocationProvider.isLocationTracking();
if (gpsActive) {
mGpsLocationProvider.startNavigating();
}
}
private void stopGpsLocked() {
boolean gpsActive = mGpsLocationProvider != null
&& mGpsLocationProvider.isLocationTracking();
if (gpsActive) {
mGpsLocationProvider.stopNavigating();
}
}
private void releaseWakeLockLocked() {
try {
releaseWakeLockXLocked();
@@ -1938,11 +1911,6 @@ public class LocationManagerService extends ILocationManager.Stub {
}
}
if (!mScreenOn) {
// Stop the gps
stopGpsLocked();
}
// Release cell lock
if (mCellWakeLockAcquired) {
mTelephonyManager.disableLocationUpdates();
@@ -2140,7 +2108,6 @@ public class LocationManagerService extends ILocationManager.Stub {
pw.println("Current Location Manager state:");
pw.println(" sProvidersLoaded=" + sProvidersLoaded);
pw.println(" mGpsLocationProvider=" + mGpsLocationProvider);
pw.println(" mGpsNavigating=" + mGpsNavigating);
pw.println(" mNetworkLocationProvider=" + mNetworkLocationProvider);
pw.println(" mCollector=" + mCollector);
pw.println(" mAlarmInterval=" + mAlarmInterval