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

Commit 1f862b0a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Expose ADAS APIs"

parents 8729fa24 a2f25653
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -4933,6 +4933,7 @@ package android.location {
  public final class LastLocationRequest implements android.os.Parcelable {
  public final class LastLocationRequest implements android.os.Parcelable {
    method public int describeContents();
    method public int describeContents();
    method public boolean isAdasGnssBypass();
    method public boolean isHiddenFromAppOps();
    method public boolean isHiddenFromAppOps();
    method public boolean isLocationSettingsIgnored();
    method public boolean isLocationSettingsIgnored();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -4943,6 +4944,7 @@ package android.location {
    ctor public LastLocationRequest.Builder();
    ctor public LastLocationRequest.Builder();
    ctor public LastLocationRequest.Builder(@NonNull android.location.LastLocationRequest);
    ctor public LastLocationRequest.Builder(@NonNull android.location.LastLocationRequest);
    method @NonNull public android.location.LastLocationRequest build();
    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.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);
    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LastLocationRequest.Builder setLocationSettingsIgnored(boolean);
  }
  }
@@ -4962,6 +4964,7 @@ package android.location {
    method @Deprecated public int getGnssBatchSize();
    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 @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 @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 isExtraLocationControllerPackageEnabled();
    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
@@ -4973,11 +4976,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 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 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 @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 setExtraLocationControllerPackage(@Nullable String);
    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean);
    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 @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.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);
    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 {
  public final class LocationRequest implements android.os.Parcelable {
@@ -4993,6 +4999,7 @@ package android.location {
    method @Deprecated @NonNull public String getProvider();
    method @Deprecated @NonNull public String getProvider();
    method @Deprecated public float getSmallestDisplacement();
    method @Deprecated public float getSmallestDisplacement();
    method @NonNull public android.os.WorkSource getWorkSource();
    method @NonNull public android.os.WorkSource getWorkSource();
    method public boolean isAdasGnssBypass();
    method public boolean isHiddenFromAppOps();
    method public boolean isHiddenFromAppOps();
    method public boolean isLocationSettingsIgnored();
    method public boolean isLocationSettingsIgnored();
    method public boolean isLowPower();
    method public boolean isLowPower();
@@ -5018,6 +5025,7 @@ package android.location {
  }
  }
  public static final class LocationRequest.Builder {
  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.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.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);
    method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.location.LocationRequest.Builder setLowPower(boolean);
+14 −2
Original line number Original line 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
     * @return true if this request should be ignored while updating app ops with location usage
     *
     *
     * @hide
     */
     */
    @SystemApi
    public boolean isHiddenFromAppOps() {
    public boolean isHiddenFromAppOps() {
        return mHiddenFromAppOps;
        return mHiddenFromAppOps;
    }
    }
@@ -65,9 +67,10 @@ public final class LastLocationRequest implements Parcelable {
     * Driving Assistance Systems) application.
     * Driving Assistance Systems) application.
     *
     *
     * @return true if all limiting factors will be ignored to satisfy GNSS request
     * @return true if all limiting factors will be ignored to satisfy GNSS request
     *
     * @hide
     * @hide
     */
     */
    // TODO: make this system api
    @SystemApi
    public boolean isAdasGnssBypass() {
    public boolean isAdasGnssBypass() {
        return mAdasGnssBypass;
        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.
     * 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
     * @return true if all limiting factors will be ignored to satisfy this request
     *
     * @hide
     */
     */
    @SystemApi
    public boolean isLocationSettingsIgnored() {
    public boolean isLocationSettingsIgnored() {
        return mLocationSettingsIgnored;
        return mLocationSettingsIgnored;
    }
    }
@@ -192,7 +198,10 @@ public final class LastLocationRequest implements Parcelable {
         *
         *
         * <p>Permissions enforcement occurs when resulting last location request is actually used,
         * <p>Permissions enforcement occurs when resulting last location request is actually used,
         * not when this method is invoked.
         * not when this method is invoked.
         *
         * @hide
         */
         */
        @SystemApi
        @RequiresPermission(Manifest.permission.UPDATE_APP_OPS_STATS)
        @RequiresPermission(Manifest.permission.UPDATE_APP_OPS_STATS)
        public @NonNull Builder setHiddenFromAppOps(boolean hiddenFromAppOps) {
        public @NonNull Builder setHiddenFromAppOps(boolean hiddenFromAppOps) {
            mHiddenFromAppOps = hiddenFromAppOps;
            mHiddenFromAppOps = hiddenFromAppOps;
@@ -211,7 +220,7 @@ public final class LastLocationRequest implements Parcelable {
         *
         *
         * @hide
         * @hide
         */
         */
        // TODO: make this system api
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull LastLocationRequest.Builder setAdasGnssBypass(boolean adasGnssBypass) {
        public @NonNull LastLocationRequest.Builder setAdasGnssBypass(boolean adasGnssBypass) {
            mAdasGnssBypass = 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,
         * <p>Permissions enforcement occurs when resulting last location request is actually used,
         * not when this method is invoked.
         * not when this method is invoked.
         *
         * @hide
         */
         */
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull Builder setLocationSettingsIgnored(boolean locationSettingsIgnored) {
        public @NonNull Builder setLocationSettingsIgnored(boolean locationSettingsIgnored) {
            mLocationSettingsIgnored = locationSettingsIgnored;
            mLocationSettingsIgnored = locationSettingsIgnored;
+4 −4
Original line number Original line Diff line number Diff line
@@ -325,7 +325,7 @@ public class LocationManager {
     *
     *
     * @hide
     * @hide
     */
     */
    // TODO: @SystemApi
    @SystemApi
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_ADAS_GNSS_ENABLED_CHANGED =
    public static final String ACTION_ADAS_GNSS_ENABLED_CHANGED =
            "android.location.action.ADAS_GNSS_ENABLED_CHANGED";
            "android.location.action.ADAS_GNSS_ENABLED_CHANGED";
@@ -338,7 +338,7 @@ public class LocationManager {
     *
     *
     * @hide
     * @hide
     */
     */
    // TODO: @SystemApi
    @SystemApi
    public static final String EXTRA_ADAS_GNSS_ENABLED = "android.location.extra.ADAS_GNSS_ENABLED";
    public static final String EXTRA_ADAS_GNSS_ENABLED = "android.location.extra.ADAS_GNSS_ENABLED";


    /**
    /**
@@ -656,7 +656,7 @@ public class LocationManager {
     *
     *
     * @hide
     * @hide
     */
     */
    //TODO: @SystemApi
    @SystemApi
    public boolean isAdasGnssLocationEnabled() {
    public boolean isAdasGnssLocationEnabled() {
        try {
        try {
            return mService.isAdasGnssLocationEnabledForUser(mContext.getUser().getIdentifier());
            return mService.isAdasGnssLocationEnabledForUser(mContext.getUser().getIdentifier());
@@ -673,7 +673,7 @@ public class LocationManager {
     *
     *
     * @hide
     * @hide
     */
     */
    // TODO: @SystemApi
    @SystemApi
    @RequiresPermission(WRITE_SECURE_SETTINGS)
    @RequiresPermission(WRITE_SECURE_SETTINGS)
    public void setAdasGnssLocationEnabled(boolean enabled) {
    public void setAdasGnssLocationEnabled(boolean enabled) {
        try {
        try {
+2 −2
Original line number Original line Diff line number Diff line
@@ -660,7 +660,7 @@ public final class LocationRequest implements Parcelable {
     *
     *
     * @hide
     * @hide
     */
     */
    // TODO: @SystemApi
    @SystemApi
    public boolean isAdasGnssBypass() {
    public boolean isAdasGnssBypass() {
        return mAdasGnssBypass;
        return mAdasGnssBypass;
    }
    }
@@ -1139,7 +1139,7 @@ public final class LocationRequest implements Parcelable {
         *
         *
         * @hide
         * @hide
         */
         */
        // TODO: @SystemApi
        @SystemApi
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
        public @NonNull Builder setAdasGnssBypass(boolean adasGnssBypass) {
        public @NonNull Builder setAdasGnssBypass(boolean adasGnssBypass) {
            mAdasGnssBypass = adasGnssBypass;
            mAdasGnssBypass = adasGnssBypass;
+0 −16
Original line number Original line Diff line number Diff line
@@ -771,14 +771,6 @@ public class LocationManagerService extends ILocationManager.Stub implements
        // sanitize request
        // sanitize request
        LocationRequest.Builder sanitized = new LocationRequest.Builder(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 (!CompatChanges.isChangeEnabled(LOW_POWER_EXCEPTIONS, Binder.getCallingUid())) {
            if (mContext.checkCallingPermission(permission.LOCATION_HARDWARE)
            if (mContext.checkCallingPermission(permission.LOCATION_HARDWARE)
                    != PERMISSION_GRANTED) {
                    != PERMISSION_GRANTED) {
@@ -914,14 +906,6 @@ public class LocationManagerService extends ILocationManager.Stub implements
        // sanitize request
        // sanitize request
        LastLocationRequest.Builder sanitized = new LastLocationRequest.Builder(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();
        request = sanitized.build();


        // validate request
        // validate request