Loading core/api/module-lib-current.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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"; } } Loading Loading @@ -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); } } } } Loading core/api/system-current.txt +0 −3 Original line number Original line Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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); Loading @@ -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); core/res/AndroidManifest.xml +3 −2 Original line number Original line Diff line number Diff line Loading @@ -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" /> <!-- ======================================= --> <!-- ======================================= --> Loading location/java/android/location/ILocationManager.aidl +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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); Loading location/java/android/location/LocationManager.java +17 −21 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
core/api/module-lib-current.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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"; } } Loading Loading @@ -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); } } } } Loading
core/api/system-current.txt +0 −3 Original line number Original line Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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); Loading @@ -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);
core/res/AndroidManifest.xml +3 −2 Original line number Original line Diff line number Diff line Loading @@ -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" /> <!-- ======================================= --> <!-- ======================================= --> Loading
location/java/android/location/ILocationManager.aidl +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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); Loading
location/java/android/location/LocationManager.java +17 −21 Original line number Original line Diff line number Diff line Loading @@ -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