am 3d76e2f3: Merge "Create GpsLocationProvider only if GPS is supported." into lmp-mr1-modular-dev

* commit '3d76e2f35ae5e4557979c053aa35c3cf3b02f1c3':
  Create GpsLocationProvider only if GPS is supported.
This commit is contained in:
Wei Liu
2015-05-12 19:06:06 +00:00
committed by Android Git Automerger
3 changed files with 21 additions and 13 deletions

View File

@@ -62,6 +62,7 @@ import android.location.GeocoderParams;
import android.location.Geofence; import android.location.Geofence;
import android.location.GpsMeasurementsEvent; import android.location.GpsMeasurementsEvent;
import android.location.GpsNavigationMessageEvent; import android.location.GpsNavigationMessageEvent;
import android.location.IGpsGeofenceHardware;
import android.location.IGpsMeasurementsListener; import android.location.IGpsMeasurementsListener;
import android.location.IGpsNavigationMessageListener; import android.location.IGpsNavigationMessageListener;
import android.location.IGpsStatusListener; import android.location.IGpsStatusListener;
@@ -164,6 +165,7 @@ public class LocationManagerService extends ILocationManager.Stub {
private LocationBlacklist mBlacklist; private LocationBlacklist mBlacklist;
private GpsMeasurementsProvider mGpsMeasurementsProvider; private GpsMeasurementsProvider mGpsMeasurementsProvider;
private GpsNavigationMessageProvider mGpsNavigationMessageProvider; private GpsNavigationMessageProvider mGpsNavigationMessageProvider;
private IGpsGeofenceHardware mGpsGeofenceProxy;
// --- fields below are protected by mLock --- // --- fields below are protected by mLock ---
// Set of providers that are explicitly enabled // Set of providers that are explicitly enabled
@@ -403,18 +405,19 @@ public class LocationManagerService extends ILocationManager.Stub {
addProviderLocked(passiveProvider); addProviderLocked(passiveProvider);
mEnabledProviders.add(passiveProvider.getName()); mEnabledProviders.add(passiveProvider.getName());
mPassiveProvider = passiveProvider; mPassiveProvider = passiveProvider;
if (GpsLocationProvider.isSupported()) {
// Create a gps location provider // Create a gps location provider
GpsLocationProvider gpsProvider = new GpsLocationProvider(mContext, this, GpsLocationProvider gpsProvider = new GpsLocationProvider(mContext, this,
mLocationHandler.getLooper()); mLocationHandler.getLooper());
if (GpsLocationProvider.isSupported()) {
mGpsStatusProvider = gpsProvider.getGpsStatusProvider(); mGpsStatusProvider = gpsProvider.getGpsStatusProvider();
mNetInitiatedListener = gpsProvider.getNetInitiatedListener(); mNetInitiatedListener = gpsProvider.getNetInitiatedListener();
addProviderLocked(gpsProvider); addProviderLocked(gpsProvider);
mRealProviders.put(LocationManager.GPS_PROVIDER, gpsProvider); mRealProviders.put(LocationManager.GPS_PROVIDER, gpsProvider);
}
mGpsMeasurementsProvider = gpsProvider.getGpsMeasurementsProvider(); mGpsMeasurementsProvider = gpsProvider.getGpsMeasurementsProvider();
mGpsNavigationMessageProvider = gpsProvider.getGpsNavigationMessageProvider(); mGpsNavigationMessageProvider = gpsProvider.getGpsNavigationMessageProvider();
mGpsGeofenceProxy = gpsProvider.getGpsGeofenceProxy();
}
/* /*
Load package name(s) containing location provider support. Load package name(s) containing location provider support.
@@ -510,7 +513,7 @@ public class LocationManagerService extends ILocationManager.Stub {
com.android.internal.R.string.config_geofenceProviderPackageName, com.android.internal.R.string.config_geofenceProviderPackageName,
com.android.internal.R.array.config_locationProviderPackageNames, com.android.internal.R.array.config_locationProviderPackageNames,
mLocationHandler, mLocationHandler,
gpsProvider.getGpsGeofenceProxy(), mGpsGeofenceProxy,
flpHardwareProvider != null ? flpHardwareProvider.getGeofenceHardware() : null); flpHardwareProvider != null ? flpHardwareProvider.getGeofenceHardware() : null);
if (provider == null) { if (provider == null) {
Slog.e(TAG, "Unable to bind FLP Geofence proxy."); Slog.e(TAG, "Unable to bind FLP Geofence proxy.");
@@ -1853,7 +1856,7 @@ public class LocationManagerService extends ILocationManager.Stub {
Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity);
} }
if (!hasLocationAccess) { if (!hasLocationAccess || mGpsMeasurementsProvider == null) {
return false; return false;
} }
return mGpsMeasurementsProvider.addListener(listener); return mGpsMeasurementsProvider.addListener(listener);
@@ -1861,8 +1864,10 @@ public class LocationManagerService extends ILocationManager.Stub {
@Override @Override
public void removeGpsMeasurementsListener(IGpsMeasurementsListener listener) { public void removeGpsMeasurementsListener(IGpsMeasurementsListener listener) {
if (mGpsMeasurementsProvider != null) {
mGpsMeasurementsProvider.removeListener(listener); mGpsMeasurementsProvider.removeListener(listener);
} }
}
@Override @Override
public boolean addGpsNavigationMessageListener( public boolean addGpsNavigationMessageListener(
@@ -1882,7 +1887,7 @@ public class LocationManagerService extends ILocationManager.Stub {
Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity);
} }
if (!hasLocationAccess) { if (!hasLocationAccess || mGpsNavigationMessageProvider == null) {
return false; return false;
} }
return mGpsNavigationMessageProvider.addListener(listener); return mGpsNavigationMessageProvider.addListener(listener);
@@ -1890,8 +1895,10 @@ public class LocationManagerService extends ILocationManager.Stub {
@Override @Override
public void removeGpsNavigationMessageListener(IGpsNavigationMessageListener listener) { public void removeGpsNavigationMessageListener(IGpsNavigationMessageListener listener) {
if (mGpsNavigationMessageProvider != null) {
mGpsNavigationMessageProvider.removeListener(listener); mGpsNavigationMessageProvider.removeListener(listener);
} }
}
@Override @Override
public boolean sendExtraCommand(String provider, String command, Bundle extras) { public boolean sendExtraCommand(String provider, String command, Bundle extras) {

View File

@@ -129,7 +129,9 @@ public final class GeofenceProxy {
private void setGpsGeofenceLocked() { private void setGpsGeofenceLocked() {
try { try {
if (mGpsGeofenceHardware != null) {
mGeofenceHardware.setGpsGeofenceHardware(mGpsGeofenceHardware); mGeofenceHardware.setGpsGeofenceHardware(mGpsGeofenceHardware);
}
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Error while connecting to GeofenceHardwareService"); Log.e(TAG, "Error while connecting to GeofenceHardwareService");
} }

View File

@@ -450,7 +450,6 @@ public class GpsLocationProvider implements LocationProviderInterface {
networkState = LocationProvider.AVAILABLE; networkState = LocationProvider.AVAILABLE;
} }
updateNetworkState(networkState, info); updateNetworkState(networkState, info);
} else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(action) } else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(action)
|| Intent.ACTION_SCREEN_OFF.equals(action) || Intent.ACTION_SCREEN_OFF.equals(action)