diff options
author | Jorim Jaggi <jjaggi@google.com> | 2015-07-10 14:24:44 -0700 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2015-07-28 23:02:54 +0000 |
commit | 0d210f6395072db4a4c53d4cb8fac4a59a3965b4 (patch) | |
tree | 7b63f0a48ec2b0fa8b25604efb17ccade833b568 /services/core/java/com/android/server/display | |
parent | 751a96a040ada09199ca3356d9a515ec090d1237 (diff) | |
download | frameworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.zip frameworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.tar.gz frameworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.tar.bz2 |
Animation for touch, wake and unlock
- Add callback to inform SysUI when the screen has been unblocked
and turned on.
- Cleanup inconsistent messaging about device interactive/screen on
and off.
- Add callbacks to inform SysUI about screen states
- Implement a quick fade for the scrim after touch, wake, and unlock.
First, start with a black scrim on top of everything, and then fade
it out.
- Make sure we play the normal unlock animation when device is pulsing
- Override navigation bar animations for touch, wake and unlock: Fade
in the same manner as the scrim.
Bug: 22571198
Bug: 21855614
Change-Id: I8ff08d72cced1e0f03c78d71ff710d8a4f6b848c
Diffstat (limited to 'services/core/java/com/android/server/display')
-rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 8d2687b..452378f 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -106,6 +106,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private static final int BRIGHTNESS_RAMP_RATE_FAST = 200; private static final int BRIGHTNESS_RAMP_RATE_SLOW = 40; + private static final int REPORTED_TO_POLICY_SCREEN_OFF = 0; + private static final int REPORTED_TO_POLICY_SCREEN_TURNING_ON = 1; + private static final int REPORTED_TO_POLICY_SCREEN_ON = 2; + private final Object mLock = new Object(); private final Context mContext; @@ -231,8 +235,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // The elapsed real time when the screen on was blocked. private long mScreenOnBlockStartRealTime; - // True if we told the window manager policy that the screen was off. - private boolean mReportedScreenOffToPolicy; + // Screen state we reported to policy. Must be one of REPORTED_TO_POLICY_SCREEN_* fields. + private int mReportedScreenStateToPolicy; // Remembers whether certain kinds of brightness adjustments // were recently applied so that we can decide how to transition. @@ -699,6 +703,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call final boolean finished = ready && !mScreenBrightnessRampAnimator.isAnimating(); + // Notify policy about screen turned on. + if (ready && state != Display.STATE_OFF + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { + mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_ON; + mWindowManagerPolicy.screenTurnedOn(); + } + // Grab a wake lock if we have unfinished business. if (!finished && !mUnfinishedBusiness) { if (DEBUG) { @@ -776,12 +787,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // it is only removed once the window manager tells us that the activity has // finished drawing underneath. final boolean isOff = (state == Display.STATE_OFF); - if (isOff && !mReportedScreenOffToPolicy && !mScreenOffBecauseOfProximity) { - mReportedScreenOffToPolicy = true; + if (isOff && mReportedScreenStateToPolicy != REPORTED_TO_POLICY_SCREEN_OFF + && !mScreenOffBecauseOfProximity) { + mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_OFF; unblockScreenOn(); mWindowManagerPolicy.screenTurnedOff(); - } else if (!isOff && mReportedScreenOffToPolicy) { - mReportedScreenOffToPolicy = false; + } else if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) { + mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_TURNING_ON; if (mPowerState.getColorFadeLevel() == 0.0f) { blockScreenOn(); } else { @@ -1095,7 +1107,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call pw.println(" mAppliedLowPower=" + mAppliedLowPower); pw.println(" mPendingScreenOnUnblocker=" + mPendingScreenOnUnblocker); pw.println(" mPendingScreenOff=" + mPendingScreenOff); - pw.println(" mReportedScreenOffToPolicy=" + mReportedScreenOffToPolicy); + pw.println(" mReportedToPolicy=" + reportedToPolicyToString(mReportedScreenStateToPolicy)); pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" + mScreenBrightnessRampAnimator.isAnimating()); @@ -1132,6 +1144,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } + private static String reportedToPolicyToString(int state) { + switch (state) { + case REPORTED_TO_POLICY_SCREEN_OFF: + return "REPORTED_TO_POLICY_SCREEN_OFF"; + case REPORTED_TO_POLICY_SCREEN_TURNING_ON: + return "REPORTED_TO_POLICY_SCREEN_TURNING_ON"; + case REPORTED_TO_POLICY_SCREEN_ON: + return "REPORTED_TO_POLICY_SCREEN_ON"; + default: + return Integer.toString(state); + } + } + private static Spline createAutoBrightnessSpline(int[] lux, int[] brightness) { try { final int n = brightness.length; |