From e048d65f45e14d7b7c1f2d84d7da31d6efe081c7 Mon Sep 17 00:00:00 2001 From: Vaibhav Devmurari Date: Thu, 25 May 2023 17:09:19 +0000 Subject: [PATCH] Add ALS controlled keyboard backlight support DD: go/pk_ambient_backlight_control Bug: 262039362 Test: atest FrameworksServicesTests:AmbientKeyboardBacklightControllerTests Test: atest FrameworksServicesTests:KeyboardBacklightControllerTests Change-Id: I5254d7db06f0beedeab59c0cc69dd3d8d046a152 --- .../display/DisplayManagerInternal.java | 28 ++ core/res/res/values/config.xml | 50 +- core/res/res/values/symbols.xml | 5 +- .../server/display/DisplayManagerService.java | 16 + .../AmbientKeyboardBacklightController.java | 431 ++++++++++++++++++ .../input/InputFeatureFlagProvider.java | 19 +- .../input/KeyboardBacklightController.java | 150 ++++-- ...AmbientKeyboardBacklightControllerTests.kt | 355 +++++++++++++++ .../input/KeyboardBacklightControllerTests.kt | 237 +++++++++- 9 files changed, 1230 insertions(+), 61 deletions(-) create mode 100644 services/core/java/com/android/server/input/AmbientKeyboardBacklightController.java create mode 100644 services/tests/servicestests/src/com/android/server/input/AmbientKeyboardBacklightControllerTests.kt diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java index d6df033212983..94bff893b5a85 100644 --- a/core/java/android/hardware/display/DisplayManagerInternal.java +++ b/core/java/android/hardware/display/DisplayManagerInternal.java @@ -412,6 +412,15 @@ public abstract class DisplayManagerInternal { @Nullable public abstract HostUsiVersion getHostUsiVersion(int displayId); + /** + * Get the ALS data for a particular display. + * + * @param displayId The id of the display. + * @return {@link AmbientLightSensorData} + */ + @Nullable + public abstract AmbientLightSensorData getAmbientLightSensorData(int displayId); + /** * Get all available DisplayGroupIds. */ @@ -669,4 +678,23 @@ public abstract class DisplayManagerInternal { return "RefreshRateLimitation(" + type + ": " + range + ")"; } } + + /** + * Class to provide Ambient sensor data using the API + * {@link DisplayManagerInternal#getAmbientLightSensorData(int)} + */ + public static final class AmbientLightSensorData { + public String sensorName; + public String sensorType; + + public AmbientLightSensorData(String name, String type) { + sensorName = name; + sensorType = type; + } + + @Override + public String toString() { + return "AmbientLightSensorData(" + sensorName + ", " + sensorType + ")"; + } + } } diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 8473f9bc8d0b7..828e7aa765660 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1675,16 +1675,56 @@ in the config_autoBrightnessLevels array. This array should have size one greater than the size of the config_autoBrightnessLevels array. The brightness values must be between 0 and 255 and be non-decreasing. + This must be overridden in platform specific overlays --> - - + + 1.0 + + + + + 102 + 153 + 0 + + + + + -1 + 40 + 150 + + + + + 55 + 200 + -1