Merge "Create GpsLocationProvider only if GPS is supported." into lmp-mr1-modular-dev
This commit is contained in:
@@ -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;
|
||||||
// Create a gps location provider
|
|
||||||
GpsLocationProvider gpsProvider = new GpsLocationProvider(mContext, this,
|
|
||||||
mLocationHandler.getLooper());
|
|
||||||
|
|
||||||
if (GpsLocationProvider.isSupported()) {
|
if (GpsLocationProvider.isSupported()) {
|
||||||
|
// Create a gps location provider
|
||||||
|
GpsLocationProvider gpsProvider = new GpsLocationProvider(mContext, this,
|
||||||
|
mLocationHandler.getLooper());
|
||||||
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();
|
||||||
|
mGpsNavigationMessageProvider = gpsProvider.getGpsNavigationMessageProvider();
|
||||||
|
mGpsGeofenceProxy = gpsProvider.getGpsGeofenceProxy();
|
||||||
}
|
}
|
||||||
mGpsMeasurementsProvider = gpsProvider.getGpsMeasurementsProvider();
|
|
||||||
mGpsNavigationMessageProvider = gpsProvider.getGpsNavigationMessageProvider();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
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.");
|
||||||
@@ -1854,7 +1857,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);
|
||||||
@@ -1862,7 +1865,9 @@ public class LocationManagerService extends ILocationManager.Stub {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeGpsMeasurementsListener(IGpsMeasurementsListener listener) {
|
public void removeGpsMeasurementsListener(IGpsMeasurementsListener listener) {
|
||||||
mGpsMeasurementsProvider.removeListener(listener);
|
if (mGpsMeasurementsProvider != null) {
|
||||||
|
mGpsMeasurementsProvider.removeListener(listener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1883,7 +1888,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);
|
||||||
@@ -1891,7 +1896,9 @@ public class LocationManagerService extends ILocationManager.Stub {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeGpsNavigationMessageListener(IGpsNavigationMessageListener listener) {
|
public void removeGpsNavigationMessageListener(IGpsNavigationMessageListener listener) {
|
||||||
mGpsNavigationMessageProvider.removeListener(listener);
|
if (mGpsNavigationMessageProvider != null) {
|
||||||
|
mGpsNavigationMessageProvider.removeListener(listener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -129,7 +129,9 @@ public final class GeofenceProxy {
|
|||||||
|
|
||||||
private void setGpsGeofenceLocked() {
|
private void setGpsGeofenceLocked() {
|
||||||
try {
|
try {
|
||||||
mGeofenceHardware.setGpsGeofenceHardware(mGpsGeofenceHardware);
|
if (mGpsGeofenceHardware != null) {
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -444,13 +444,12 @@ public class GpsLocationProvider implements LocationProviderInterface {
|
|||||||
|
|
||||||
int networkState;
|
int networkState;
|
||||||
if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false) ||
|
if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false) ||
|
||||||
!info.isConnected()) {
|
!info.isConnected()) {
|
||||||
networkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
|
networkState = LocationProvider.TEMPORARILY_UNAVAILABLE;
|
||||||
} else {
|
} else {
|
||||||
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user