diff --git a/services/java/com/android/server/power/DisplayPowerController.java b/services/java/com/android/server/power/DisplayPowerController.java index bbd2baad86c19..96bdbc3485630 100644 --- a/services/java/com/android/server/power/DisplayPowerController.java +++ b/services/java/com/android/server/power/DisplayPowerController.java @@ -769,6 +769,7 @@ private void setScreenOn(boolean on) { mNotifier.onScreenOn(); } else { mLights.getLight(LightsService.LIGHT_ID_BUTTONS).setBrightness(0); + mLights.getLight(LightsService.LIGHT_ID_KEYBOARD).setBrightness(0); mNotifier.onScreenOff(); } } diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java index ac7293d3d5184..479b21b54cdde 100644 --- a/services/java/com/android/server/power/PowerManagerService.java +++ b/services/java/com/android/server/power/PowerManagerService.java @@ -33,6 +33,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; import android.net.Uri; @@ -147,6 +148,7 @@ public final class PowerManagerService extends IPowerManager.Stub // minimum screen off timeout should be longer than this. private static final int SCREEN_DIM_DURATION = 7 * 1000; private static final int BUTTON_ON_DURATION = 5 * 1000; + private static final int KEYBOARD_ON_DURATION = 9 * 1000; // The maximum screen dim time expressed as a ratio relative to the screen // off timeout. If the screen off timeout is very short then we want the @@ -187,6 +189,7 @@ public final class PowerManagerService extends IPowerManager.Stub private DreamManagerService mDreamManager; private LightsService.Light mAttentionLight; private LightsService.Light mButtonsLight; + private LightsService.Light mKeyboardLight; private final Object mLock = new Object(); @@ -444,6 +447,7 @@ public void systemReady(TwilightService twilight, DreamManagerService dreamManag mSettingsObserver = new SettingsObserver(mHandler); mAttentionLight = mLightsService.getLight(LightsService.LIGHT_ID_ATTENTION); mButtonsLight = mLightsService.getLight(LightsService.LIGHT_ID_BUTTONS); + mKeyboardLight = mLightsService.getLight(LightsService.LIGHT_ID_KEYBOARD); // Register for broadcasts from other components of the system. IntentFilter filter = new IntentFilter(); @@ -1303,6 +1307,14 @@ private void updateUserActivitySummaryLocked(long now, int dirty) { mButtonsLight.setBrightness(mDisplayPowerRequest.screenBrightness); nextTimeout = now + BUTTON_ON_DURATION; } + if (now > mLastUserActivityTime + KEYBOARD_ON_DURATION) { + mKeyboardLight.setBrightness(0); + } else if (mContext.getResources().getConfiguration().hardKeyboardHidden != Configuration.HARDKEYBOARDHIDDEN_YES){ + mKeyboardLight.setBrightness(mDisplayPowerRequest.screenBrightness); + nextTimeout = now + KEYBOARD_ON_DURATION; + } else if (mContext.getResources().getConfiguration().hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES){ + mKeyboardLight.setBrightness(0); + } mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT; } else { nextTimeout = mLastUserActivityTime + screenOffTimeout;