Merge "Fix GPS settings change listener in LocManager" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6809352087
@@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.database.ContentObserver;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.location.Address;
|
import android.location.Address;
|
||||||
import android.location.Criteria;
|
import android.location.Criteria;
|
||||||
@@ -87,7 +88,7 @@ import java.util.Set;
|
|||||||
* The service class that manages LocationProviders and issues location
|
* The service class that manages LocationProviders and issues location
|
||||||
* updates and alerts.
|
* updates and alerts.
|
||||||
*/
|
*/
|
||||||
public class LocationManagerService extends ILocationManager.Stub implements Observer, Runnable {
|
public class LocationManagerService extends ILocationManager.Stub implements Runnable {
|
||||||
private static final String TAG = "LocationManagerService";
|
private static final String TAG = "LocationManagerService";
|
||||||
public static final boolean D = false;
|
public static final boolean D = false;
|
||||||
|
|
||||||
@@ -207,24 +208,30 @@ public class LocationManagerService extends ILocationManager.Stub implements Obs
|
|||||||
mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
|
mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
|
||||||
mPackageManager = mContext.getPackageManager();
|
mPackageManager = mContext.getPackageManager();
|
||||||
|
|
||||||
|
mBlacklist = new LocationBlacklist(mContext, mLocationHandler);
|
||||||
|
mBlacklist.init();
|
||||||
|
mLocationFudger = new LocationFudger();
|
||||||
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
loadProvidersLocked();
|
loadProvidersLocked();
|
||||||
}
|
}
|
||||||
mBlacklist = new LocationBlacklist(mContext, mLocationHandler);
|
|
||||||
mBlacklist.init();
|
|
||||||
mGeofenceManager = new GeofenceManager(mContext, mBlacklist);
|
mGeofenceManager = new GeofenceManager(mContext, mBlacklist);
|
||||||
mLocationFudger = new LocationFudger();
|
|
||||||
|
|
||||||
// listen for settings changes
|
// listen for settings changes
|
||||||
ContentResolver resolver = mContext.getContentResolver();
|
mContext.getContentResolver().registerContentObserver(
|
||||||
Cursor settingsCursor = resolver.query(Settings.Secure.CONTENT_URI, null,
|
Settings.Secure.getUriFor(Settings.Secure.LOCATION_PROVIDERS_ALLOWED), true,
|
||||||
"(" + NameValueTable.NAME + "=?)",
|
new ContentObserver(mLocationHandler) {
|
||||||
new String[]{Settings.Secure.LOCATION_PROVIDERS_ALLOWED}, null);
|
@Override
|
||||||
ContentQueryMap query = new ContentQueryMap(settingsCursor, NameValueTable.NAME, true,
|
public void onChange(boolean selfChange) {
|
||||||
mLocationHandler);
|
synchronized (mLock) {
|
||||||
settingsCursor.close();
|
updateProvidersLocked();
|
||||||
query.addObserver(this);
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
mPackageMonitor.register(mContext, Looper.myLooper(), true);
|
mPackageMonitor.register(mContext, Looper.myLooper(), true);
|
||||||
|
|
||||||
|
updateProvidersLocked();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadProvidersLocked() {
|
private void loadProvidersLocked() {
|
||||||
@@ -299,8 +306,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Obs
|
|||||||
if (mGeocodeProvider == null) {
|
if (mGeocodeProvider == null) {
|
||||||
Slog.e(TAG, "no geocoder provider found");
|
Slog.e(TAG, "no geocoder provider found");
|
||||||
}
|
}
|
||||||
|
|
||||||
updateProvidersLocked();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -544,14 +549,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Obs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Settings Observer callback */
|
|
||||||
@Override
|
|
||||||
public void update(Observable o, Object arg) {
|
|
||||||
synchronized (mLock) {
|
|
||||||
updateProvidersLocked();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addProviderLocked(LocationProviderInterface provider) {
|
private void addProviderLocked(LocationProviderInterface provider) {
|
||||||
mProviders.add(provider);
|
mProviders.add(provider);
|
||||||
mProvidersByName.put(provider.getName(), provider);
|
mProvidersByName.put(provider.getName(), provider);
|
||||||
|
|||||||
Reference in New Issue
Block a user