Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c19efc20 authored by Jeff Hamilton's avatar Jeff Hamilton
Browse files

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
parent 31fed737
Loading
Loading
Loading
Loading
+1 −8
Original line number Original line Diff line number Diff line
@@ -636,19 +636,12 @@
         of new location providers at run-time. The new package does not
         of new location providers at run-time. The new package does not
         have to be explicitly listed here, however it must have a signature
         have to be explicitly listed here, however it must have a signature
         that matches the signature of at least one package on this list.
         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">
    <string-array name="config_locationProviderPackageNames" translatable="false">
        <!-- The standard AOSP fused location provider -->
        <item>com.android.location.fused</item>
        <item>com.android.location.fused</item>
    </string-array>
    </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
    <!-- Boolean indicating if current platform supports bluetooth SCO for off call
    use cases -->
    use cases -->
    <bool name="config_bluetooth_sco_off_call">true</bool>
    <bool name="config_bluetooth_sco_off_call">true</bool>
+0 −1
Original line number Original line Diff line number Diff line
@@ -1467,7 +1467,6 @@
  <java-symbol type="array" name="radioAttributes" />
  <java-symbol type="array" name="radioAttributes" />
  <java-symbol type="array" name="config_oemUsbModeOverride" />
  <java-symbol type="array" name="config_oemUsbModeOverride" />
  <java-symbol type="array" name="config_locationProviderPackageNames" />
  <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_animateScreenLights" />
  <java-symbol type="bool" name="config_automatic_brightness_available" />
  <java-symbol type="bool" name="config_automatic_brightness_available" />
  <java-symbol type="bool" name="config_sf_limitedAlpha" />
  <java-symbol type="bool" name="config_sf_limitedAlpha" />
+1 −1
Original line number Original line Diff line number Diff line
@@ -39,7 +39,7 @@
           <intent-filter>
           <intent-filter>
               <action android:name="com.android.location.service.FusedLocationProvider" />
               <action android:name="com.android.location.service.FusedLocationProvider" />
           </intent-filter>
           </intent-filter>
           <meta-data android:name="version" android:value="1" />
           <meta-data android:name="serviceVersion" android:value="1" />
        </service>
        </service>
    </application>
    </application>
</manifest>
</manifest>
+7 −2
Original line number Original line Diff line number Diff line
@@ -247,7 +247,7 @@ public class FusionEngine implements LocationListener {
        mNetworkWeight /= totalWeight;
        mNetworkWeight /= totalWeight;
        mGpsWeight /= totalWeight;
        mGpsWeight /= totalWeight;


        Location fused = new Location(LocationManager.FUSED_PROVIDER);
        Location fused = new Location(/* LocationManager.FUSED_PROVIDER */ "fused");
        // fuse lat/long
        // fuse lat/long
        // assumes the two locations are close enough that earth curvature doesn't matter
        // assumes the two locations are close enough that earth curvature doesn't matter
        fused.setLatitude(weigh(mGpsLocation.getLatitude(), mNetworkLocation.getLatitude()));
        fused.setLatitude(weigh(mGpsLocation.getLatitude(), mNetworkLocation.getLatitude()));
@@ -303,7 +303,12 @@ public class FusionEngine implements LocationListener {
        }
        }


        if (mNetworkLocation != null) {
        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;
        mFusedLocation = fused;
+3 −7
Original line number Original line Diff line number Diff line
@@ -275,14 +275,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
        */
        */
        Resources resources = mContext.getResources();
        Resources resources = mContext.getResources();
        ArrayList<String> providerPackageNames = new ArrayList<String>();
        ArrayList<String> providerPackageNames = new ArrayList<String>();
        String[] pkgs1 = resources.getStringArray(
        String[] pkgs = resources.getStringArray(
                com.android.internal.R.array.config_locationProviderPackageNames);
                com.android.internal.R.array.config_locationProviderPackageNames);
        String[] pkgs2 = resources.getStringArray(
        if (D) Log.d(TAG, "built-in location providers: " + Arrays.toString(pkgs));
                com.android.internal.R.array.config_overlay_locationProviderPackageNames);
        if (pkgs != null) providerPackageNames.addAll(Arrays.asList(pkgs));
        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));


        // bind to network provider
        // bind to network provider
        LocationProviderProxy networkProvider = LocationProviderProxy.createAndBind(
        LocationProviderProxy networkProvider = LocationProviderProxy.createAndBind(
Loading