diff options
author | Jeff Hamilton <jham@android.com> | 2012-10-03 00:40:50 -0500 |
---|---|---|
committer | Jeff Hamilton <jham@android.com> | 2012-10-04 11:00:42 -0500 |
commit | c19efc204aee1f0f3164dc21bd2ef3fdd4259c71 (patch) | |
tree | 51d44c5e4dac891b1144f34a351799deb30b2952 | |
parent | 31fed73701041cd5455942abe2dacfc7639c5370 (diff) | |
download | frameworks_base-c19efc204aee1f0f3164dc21bd2ef3fdd4259c71.zip frameworks_base-c19efc204aee1f0f3164dc21bd2ef3fdd4259c71.tar.gz frameworks_base-c19efc204aee1f0f3164dc21bd2ef3fdd4259c71.tar.bz2 |
Changes to support updating location providers.
There is now only a single config value pointing
at a list of packages to get certs from. The old
system was a bit confusing.
The fused location provider also now builds
against SDK 17, and the meta data service version
tag was renamed from the overly generic "version"
to "serviceVersion".
Bug: 7242814
Change-Id: I00d27c9cbd5cc31a37bb4a98160435d15a72e19e
-rwxr-xr-x | core/res/res/values/config.xml | 9 | ||||
-rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
-rw-r--r-- | packages/FusedLocation/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | packages/FusedLocation/src/com/android/location/fused/FusionEngine.java | 9 | ||||
-rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 10 | ||||
-rw-r--r-- | services/java/com/android/server/ServiceWatcher.java | 4 |
6 files changed, 14 insertions, 21 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 16960c8..ad3234a 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -636,19 +636,12 @@ of new location providers at run-time. The new package does not have to be explicitly listed here, however it must have a signature that matches the signature of at least one package on this list. - Platforms should overlay additional packages in - config_overlay_locationProviderPackageNames, instead of overlaying - this config, if they only want to append packages and not replace - the entire array. --> <string-array name="config_locationProviderPackageNames" translatable="false"> + <!-- The standard AOSP fused location provider --> <item>com.android.location.fused</item> </string-array> - <!-- Pacakge name(s) supplied by overlay, and appended to - config_locationProviderPackageNames. --> - <string-array name="config_overlay_locationProviderPackageNames" translatable="false" /> - <!-- Boolean indicating if current platform supports bluetooth SCO for off call use cases --> <bool name="config_bluetooth_sco_off_call">true</bool> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 281d92a..6eea65a 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1467,7 +1467,6 @@ <java-symbol type="array" name="radioAttributes" /> <java-symbol type="array" name="config_oemUsbModeOverride" /> <java-symbol type="array" name="config_locationProviderPackageNames" /> - <java-symbol type="array" name="config_overlay_locationProviderPackageNames" /> <java-symbol type="bool" name="config_animateScreenLights" /> <java-symbol type="bool" name="config_automatic_brightness_available" /> <java-symbol type="bool" name="config_sf_limitedAlpha" /> diff --git a/packages/FusedLocation/AndroidManifest.xml b/packages/FusedLocation/AndroidManifest.xml index 4c57401..7df4b72 100644 --- a/packages/FusedLocation/AndroidManifest.xml +++ b/packages/FusedLocation/AndroidManifest.xml @@ -39,7 +39,7 @@ <intent-filter> <action android:name="com.android.location.service.FusedLocationProvider" /> </intent-filter> - <meta-data android:name="version" android:value="1" /> + <meta-data android:name="serviceVersion" android:value="1" /> </service> </application> </manifest> diff --git a/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java b/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java index 2cf795d..c62c0d7 100644 --- a/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java +++ b/packages/FusedLocation/src/com/android/location/fused/FusionEngine.java @@ -247,7 +247,7 @@ public class FusionEngine implements LocationListener { mNetworkWeight /= totalWeight; mGpsWeight /= totalWeight; - Location fused = new Location(LocationManager.FUSED_PROVIDER); + Location fused = new Location(/* LocationManager.FUSED_PROVIDER */ "fused"); // fuse lat/long // assumes the two locations are close enough that earth curvature doesn't matter fused.setLatitude(weigh(mGpsLocation.getLatitude(), mNetworkLocation.getLatitude())); @@ -303,7 +303,12 @@ public class FusionEngine implements LocationListener { } if (mNetworkLocation != null) { - fused.setExtraLocation(Location.EXTRA_NO_GPS_LOCATION, mNetworkLocation); + // Manually set the extras for the "no gps" location, pointing at the NLP + Bundle extras = new Bundle(); + extras.putParcelable("noGPSLocation", mNetworkLocation); + fused.setExtras(extras); + // Done inline above to compile against SDK 17 + //fused.setExtraLocation(Location.EXTRA_NO_GPS_LOCATION, mNetworkLocation); } mFusedLocation = fused; diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index ae95c4c..927bd05 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -275,14 +275,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run */ Resources resources = mContext.getResources(); ArrayList<String> providerPackageNames = new ArrayList<String>(); - String[] pkgs1 = resources.getStringArray( + String[] pkgs = resources.getStringArray( com.android.internal.R.array.config_locationProviderPackageNames); - String[] pkgs2 = resources.getStringArray( - com.android.internal.R.array.config_overlay_locationProviderPackageNames); - if (D) Log.d(TAG, "built-in location providers: " + Arrays.toString(pkgs1)); - if (D) Log.d(TAG, "overlay location providers: " + Arrays.toString(pkgs2)); - if (pkgs1 != null) providerPackageNames.addAll(Arrays.asList(pkgs1)); - if (pkgs2 != null) providerPackageNames.addAll(Arrays.asList(pkgs2)); + if (D) Log.d(TAG, "built-in location providers: " + Arrays.toString(pkgs)); + if (pkgs != null) providerPackageNames.addAll(Arrays.asList(pkgs)); // bind to network provider LocationProviderProxy networkProvider = LocationProviderProxy.createAndBind( diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/java/com/android/server/ServiceWatcher.java index e99949b..299c675 100644 --- a/services/java/com/android/server/ServiceWatcher.java +++ b/services/java/com/android/server/ServiceWatcher.java @@ -42,7 +42,7 @@ import java.util.List; */ public class ServiceWatcher implements ServiceConnection { private static final boolean D = false; - private static final String EXTRA_VERSION = "version"; + private static final String EXTRA_SERVICE_VERSION = "serviceVersion"; private final String mTag; private final Context mContext; @@ -127,7 +127,7 @@ public class ServiceWatcher implements ServiceConnection { // check version int version = 0; if (rInfo.serviceInfo.metaData != null) { - version = rInfo.serviceInfo.metaData.getInt(EXTRA_VERSION, 0); + version = rInfo.serviceInfo.metaData.getInt(EXTRA_SERVICE_VERSION, 0); } if (version > mVersion) { bestVersion = version; |