summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Hamilton <jham@android.com>2012-10-03 00:40:50 -0500
committerJeff Hamilton <jham@android.com>2012-10-04 11:00:42 -0500
commitc19efc204aee1f0f3164dc21bd2ef3fdd4259c71 (patch)
tree51d44c5e4dac891b1144f34a351799deb30b2952
parent31fed73701041cd5455942abe2dacfc7639c5370 (diff)
downloadframeworks_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-xcore/res/res/values/config.xml9
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--packages/FusedLocation/AndroidManifest.xml2
-rw-r--r--packages/FusedLocation/src/com/android/location/fused/FusionEngine.java9
-rw-r--r--services/java/com/android/server/LocationManagerService.java10
-rw-r--r--services/java/com/android/server/ServiceWatcher.java4
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;