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

Commit b9314e16 authored by Eva Chen's avatar Eva Chen Committed by Android (Google) Code Review
Browse files

Merge "Update GNSS S2R APIs based on API Council feedback."

parents 9c6a9281 a10ba7bb
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
package android {

  public static final class Manifest.permission {
    field public static final String CONTROL_AUTOMOTIVE_GNSS = "android.permission.CONTROL_AUTOMOTIVE_GNSS";
    field public static final String GET_INTENT_SENDER_INTENT = "android.permission.GET_INTENT_SENDER_INTENT";
  }

@@ -162,6 +163,8 @@ package android.location {

  public class LocationManager {
    method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public boolean injectLocation(@NonNull android.location.Location);
    method @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS) public boolean isAutomotiveGnssSuspended();
    method @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS) public void setAutomotiveGnssSuspended(boolean);
  }

}
+0 −3
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ package android {
    field public static final String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
    field public static final String ASSOCIATE_COMPANION_DEVICES = "android.permission.ASSOCIATE_COMPANION_DEVICES";
    field public static final String AUTOMOTIVE_GNSS_CONTROLS = "android.permission.AUTOMOTIVE_GNSS_CONTROLS";
    field public static final String BACKGROUND_CAMERA = "android.permission.BACKGROUND_CAMERA";
    field public static final String BACKUP = "android.permission.BACKUP";
    field public static final String BATTERY_PREDICTION = "android.permission.BATTERY_PREDICTION";
@@ -5363,7 +5362,6 @@ package android.location {
    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 @RequiresPermission(android.Manifest.permission.AUTOMOTIVE_GNSS_CONTROLS) public boolean isAutoGnssSuspended();
    method public boolean isExtraLocationControllerPackageEnabled();
    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
@@ -5376,7 +5374,6 @@ 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 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.AUTOMOTIVE_GNSS_CONTROLS) public void setAutoGnssSuspended(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);
+3 −2
Original line number Diff line number Diff line
@@ -1838,11 +1838,12 @@
    <permission android:name="android.permission.ACCESS_MOCK_LOCATION"
        android:protectionLevel="signature" />

    <!-- @SystemApi @hide Allows automotive applications to control location
    <!-- @hide @SystemApi(client=android.annotation.SystemApi.Client.MODULE_LIBRARIES)
         Allows automotive applications to control location
         suspend state for power management use cases.
         <p>Not for use by third-party applications.
    -->
    <permission android:name="android.permission.AUTOMOTIVE_GNSS_CONTROLS"
    <permission android:name="android.permission.CONTROL_AUTOMOTIVE_GNSS"
        android:protectionLevel="signature|privileged" />

    <!-- ======================================= -->
+2 −2
Original line number Diff line number Diff line
@@ -125,8 +125,8 @@ interface ILocationManager
    boolean isAdasGnssLocationEnabledForUser(int userId);
    void setAdasGnssLocationEnabledForUser(boolean enabled, int userId);

    boolean isAutoGnssSuspended();
    void setAutoGnssSuspended(boolean suspended);
    boolean isAutomotiveGnssSuspended();
    void setAutomotiveGnssSuspended(boolean suspended);

    void addTestProvider(String name, in ProviderProperties properties,
        in List<String> locationTags, String packageName, @nullable String attributionTag);
+17 −21
Original line number Diff line number Diff line
@@ -758,45 +758,41 @@ public class LocationManager {
    }

    /**
     * Set whether GNSS requests are suspended on the device.
     * Set whether GNSS requests are suspended on the automotive device.
     *
     * This method was added to help support power management use cases on automotive devices. More
     * specifically, it is being added to fix a suspend to RAM issue where the SoC can't go into
     * a lower power state when applications are actively requesting GNSS updates.
     * For devices where GNSS prevents the system from going into a low power state, GNSS should
     * be suspended right before going into the lower power state and resumed right after the device
     * wakes up.
     *
     * Ideally, the issue should be fixed at a lower layer in the stack, but this API introduces a
     * workaround in the platform layer. This API allows car specific services to halt GNSS requests
     * based on changes to the car power policy, which will in turn enable the device to go into
     * suspend.
     * This method disables GNSS and should only be used for power management use cases such as
     * suspend-to-RAM or suspend-to-disk.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.AUTOMOTIVE_GNSS_CONTROLS)
    public void setAutoGnssSuspended(boolean suspended) {
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresFeature(PackageManager.FEATURE_AUTOMOTIVE)
    @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS)
    public void setAutomotiveGnssSuspended(boolean suspended) {
        try {
            mService.setAutoGnssSuspended(suspended);
            mService.setAutomotiveGnssSuspended(suspended);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Return whether GNSS requests are suspended or not.
     *
     * This method was added to help support power management use cases on automotive devices. More
     * specifically, it is being added as part of the fix for a suspend to RAM issue where the SoC
     * can't go into a lower power state when applications are actively requesting GNSS updates.
     * Return whether GNSS requests are suspended on the automotive device.
     *
     * @return true if GNSS requests are suspended and false if they aren't.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.AUTOMOTIVE_GNSS_CONTROLS)
    public boolean isAutoGnssSuspended() {
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresFeature(PackageManager.FEATURE_AUTOMOTIVE)
    @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS)
    public boolean isAutomotiveGnssSuspended() {
        try {
            return mService.isAutoGnssSuspended();
            return mService.isAutomotiveGnssSuspended();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
Loading