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 Original line Diff line number Diff line
@@ -2,6 +2,7 @@
package android {
package android {


  public static final class Manifest.permission {
  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";
    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 {
  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(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 Original line 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 AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
    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 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 BACKGROUND_CAMERA = "android.permission.BACKGROUND_CAMERA";
    field public static final String BACKUP = "android.permission.BACKUP";
    field public static final String BACKUP = "android.permission.BACKUP";
    field public static final String BATTERY_PREDICTION = "android.permission.BATTERY_PREDICTION";
    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 @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 isAdasGnssLocationEnabled();
    method @RequiresPermission(android.Manifest.permission.AUTOMOTIVE_GNSS_CONTROLS) public boolean isAutoGnssSuspended();
    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);
@@ -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 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.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 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);
+3 −2
Original line number Original line Diff line number Diff line
@@ -1838,11 +1838,12 @@
    <permission android:name="android.permission.ACCESS_MOCK_LOCATION"
    <permission android:name="android.permission.ACCESS_MOCK_LOCATION"
        android:protectionLevel="signature" />
        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.
         suspend state for power management use cases.
         <p>Not for use by third-party applications.
         <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" />
        android:protectionLevel="signature|privileged" />


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


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


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


    /**
    /**
     * Return whether GNSS requests are suspended or not.
     * Return 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 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 true if GNSS requests are suspended and false if they aren't.
     * @return true if GNSS requests are suspended and false if they aren't.
     *
     *
     * @hide
     * @hide
     */
     */
    @SystemApi
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresPermission(android.Manifest.permission.AUTOMOTIVE_GNSS_CONTROLS)
    @RequiresFeature(PackageManager.FEATURE_AUTOMOTIVE)
    public boolean isAutoGnssSuspended() {
    @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS)
    public boolean isAutomotiveGnssSuspended() {
        try {
        try {
            return mService.isAutoGnssSuspended();
            return mService.isAutomotiveGnssSuspended();
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
        }
        }
Loading