diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 6a57e4070f65..ae544b5e9d56 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -75,6 +75,10 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory; import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings; import com.android.server.policy.WindowManagerPolicy; +// Button backlights +import com.android.server.lights.LightsManager; +import com.android.server.lights.LogicalLight; + import java.io.PrintWriter; import java.util.Objects; @@ -294,6 +298,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Must only be accessed on the handler thread. private DisplayPowerState mPowerState; + // Buttons backlight + private LightsManager mLightsManager; + private LogicalLight mButtonsLight; + // True if the device should wait for negative proximity sensor before // waking up the screen. This is set to false as soon as a negative // proximity sensor measurement is observed or when the device is forced to @@ -895,6 +903,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mPowerState = new DisplayPowerState(mBlanker, mColorFadeEnabled ? new ColorFade(mDisplayId) : null, mDisplayId, displayState); + mLightsManager = LocalServices.getService(LightsManager.class); + mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS); + if (mColorFadeEnabled) { mColorFadeOnAnimator = ObjectAnimator.ofFloat( mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); @@ -1677,6 +1688,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); mWindowManagerPolicy.screenTurnedOn(mDisplayId); + mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MAX); } // Grab a wake lock if we have unfinished business. @@ -1926,6 +1938,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); unblockScreenOn(); mWindowManagerPolicy.screenTurnedOff(mDisplayId); + mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); } else if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) { @@ -1933,6 +1946,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Complete the full state transition on -> turningOff -> off. unblockScreenOff(); mWindowManagerPolicy.screenTurnedOff(mDisplayId); + mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); } if (!isOff