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

Commit a2f25653 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Expose ADAS APIs

Bug: 156688086
Test: presubmits
Change-Id: Ie7256019b5073b2c5761677bbfa31c33d13957d7
parent 0e591495
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -4931,6 +4931,7 @@ package android.location {
  public final class LastLocationRequest implements android.os.Parcelable {
    method public int describeContents();
    method public boolean isAdasGnssBypass();
    method public boolean isHiddenFromAppOps();
    method public boolean isLocationSettingsIgnored();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -4941,6 +4942,7 @@ package android.location {
    ctor public LastLocationRequest.Builder();
    ctor public LastLocationRequest.Builder(@NonNull android.location.LastLocationRequest);
    method @NonNull public android.location.LastLocationRequest build();
    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LastLocationRequest.Builder setAdasGnssBypass(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS) public android.location.LastLocationRequest.Builder setHiddenFromAppOps(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LastLocationRequest.Builder setLocationSettingsIgnored(boolean);
  }
@@ -4960,6 +4962,7 @@ package android.location {
    method @Deprecated public int getGnssBatchSize();
    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String, @NonNull android.location.LastLocationRequest);
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
    method public boolean isAdasGnssLocationEnabled();
    method public boolean isExtraLocationControllerPackageEnabled();
    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
@@ -4971,11 +4974,14 @@ package android.location {
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setAdasGnssLocationEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackage(@Nullable String);
    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle);
    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback);
    field public static final String ACTION_ADAS_GNSS_ENABLED_CHANGED = "android.location.action.ADAS_GNSS_ENABLED_CHANGED";
    field public static final String EXTRA_ADAS_GNSS_ENABLED = "android.location.extra.ADAS_GNSS_ENABLED";
  }
  public final class LocationRequest implements android.os.Parcelable {
@@ -4991,6 +4997,7 @@ package android.location {
    method @Deprecated @NonNull public String getProvider();
    method @Deprecated public float getSmallestDisplacement();
    method @NonNull public android.os.WorkSource getWorkSource();
    method public boolean isAdasGnssBypass();
    method public boolean isHiddenFromAppOps();
    method public boolean isLocationSettingsIgnored();
    method public boolean isLowPower();
@@ -5016,6 +5023,7 @@ package android.location {
  }
  public static final class LocationRequest.Builder {
    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest.Builder setAdasGnssBypass(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS) public android.location.LocationRequest.Builder setHiddenFromAppOps(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest.Builder setLocationSettingsIgnored(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.location.LocationRequest.Builder setLowPower(boolean);
+14 −2
Original line number Diff line number Diff line
@@ -53,7 +53,9 @@ public final class LastLocationRequest implements Parcelable {
     *
     * @return true if this request should be ignored while updating app ops with location usage
     *
     * @hide
     */
    @SystemApi
    public boolean isHiddenFromAppOps() {
        return mHiddenFromAppOps;
    }
@@ -65,9 +67,10 @@ public final class LastLocationRequest implements Parcelable {
     * Driving Assistance Systems) application.
     *
     * @return true if all limiting factors will be ignored to satisfy GNSS request
     *
     * @hide
     */
    // TODO: make this system api
    @SystemApi
    public boolean isAdasGnssBypass() {
        return mAdasGnssBypass;
    }
@@ -78,7 +81,10 @@ public final class LastLocationRequest implements Parcelable {
     * possible limiting factors will be ignored in order to satisfy this last location request.
     *
     * @return true if all limiting factors will be ignored to satisfy this request
     *
     * @hide
     */
    @SystemApi
    public boolean isLocationSettingsIgnored() {
        return mLocationSettingsIgnored;
    }
@@ -192,7 +198,10 @@ public final class LastLocationRequest implements Parcelable {
         *
         * <p>Permissions enforcement occurs when resulting last location request is actually used,
         * not when this method is invoked.
         *
         * @hide
         */
        @SystemApi
        @RequiresPermission(Manifest.permission.UPDATE_APP_OPS_STATS)
        public @NonNull Builder setHiddenFromAppOps(boolean hiddenFromAppOps) {
            mHiddenFromAppOps = hiddenFromAppOps;
@@ -211,7 +220,7 @@ public final class LastLocationRequest implements Parcelable {
         *
         * @hide
         */
        // TODO: make this system api
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull LastLocationRequest.Builder setAdasGnssBypass(boolean adasGnssBypass) {
            mAdasGnssBypass = adasGnssBypass;
@@ -226,7 +235,10 @@ public final class LastLocationRequest implements Parcelable {
         *
         * <p>Permissions enforcement occurs when resulting last location request is actually used,
         * not when this method is invoked.
         *
         * @hide
         */
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull Builder setLocationSettingsIgnored(boolean locationSettingsIgnored) {
            mLocationSettingsIgnored = locationSettingsIgnored;
+4 −4
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ public class LocationManager {
     *
     * @hide
     */
    // TODO: @SystemApi
    @SystemApi
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_ADAS_GNSS_ENABLED_CHANGED =
            "android.location.action.ADAS_GNSS_ENABLED_CHANGED";
@@ -338,7 +338,7 @@ public class LocationManager {
     *
     * @hide
     */
    // TODO: @SystemApi
    @SystemApi
    public static final String EXTRA_ADAS_GNSS_ENABLED = "android.location.extra.ADAS_GNSS_ENABLED";

    /**
@@ -656,7 +656,7 @@ public class LocationManager {
     *
     * @hide
     */
    //TODO: @SystemApi
    @SystemApi
    public boolean isAdasGnssLocationEnabled() {
        try {
            return mService.isAdasGnssLocationEnabledForUser(mContext.getUser().getIdentifier());
@@ -673,7 +673,7 @@ public class LocationManager {
     *
     * @hide
     */
    // TODO: @SystemApi
    @SystemApi
    @RequiresPermission(WRITE_SECURE_SETTINGS)
    public void setAdasGnssLocationEnabled(boolean enabled) {
        try {
+2 −2
Original line number Diff line number Diff line
@@ -660,7 +660,7 @@ public final class LocationRequest implements Parcelable {
     *
     * @hide
     */
    // TODO: @SystemApi
    @SystemApi
    public boolean isAdasGnssBypass() {
        return mAdasGnssBypass;
    }
@@ -1139,7 +1139,7 @@ public final class LocationRequest implements Parcelable {
         *
         * @hide
         */
        // TODO: @SystemApi
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull Builder setAdasGnssBypass(boolean adasGnssBypass) {
            mAdasGnssBypass = adasGnssBypass;
+0 −16
Original line number Diff line number Diff line
@@ -771,14 +771,6 @@ public class LocationManagerService extends ILocationManager.Stub implements
        // sanitize request
        LocationRequest.Builder sanitized = new LocationRequest.Builder(request);

        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
                && GPS_PROVIDER.equals(provider)
                && ArrayUtils.contains(mContext.getResources().getStringArray(
                com.android.internal.R.array.config_locationDriverAssistancePackageNames),
                identity.getPackageName())) {
            sanitized.setAdasGnssBypass(true);
        }

        if (!CompatChanges.isChangeEnabled(LOW_POWER_EXCEPTIONS, Binder.getCallingUid())) {
            if (mContext.checkCallingPermission(permission.LOCATION_HARDWARE)
                    != PERMISSION_GRANTED) {
@@ -914,14 +906,6 @@ public class LocationManagerService extends ILocationManager.Stub implements
        // sanitize request
        LastLocationRequest.Builder sanitized = new LastLocationRequest.Builder(request);

        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
                && GPS_PROVIDER.equals(provider)
                && ArrayUtils.contains(mContext.getResources().getStringArray(
                com.android.internal.R.array.config_locationDriverAssistancePackageNames),
                identity.getPackageName())) {
            sanitized.setAdasGnssBypass(true);
        }

        request = sanitized.build();

        // validate request