Merge "Expose ADAS APIs"

This commit is contained in:
TreeHugger Robot
2021-07-19 23:08:10 +00:00
committed by Android (Google) Code Review
5 changed files with 28 additions and 24 deletions

View File

@@ -4933,6 +4933,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);
@@ -4943,6 +4944,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);
}
@@ -4962,6 +4964,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);
@@ -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 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 {
@@ -4993,6 +4999,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();
@@ -5018,6 +5025,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);

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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