mPowerKeyHandled = true;
mHandler.removeMessages(MSG_POWER_LONG_PRESS);
// See if we deferred screen wake because long press power for torch is enabled
- if (mResolvedLongPressOnPowerBehavior == LONG_PRESS_POWER_TORCH && !isScreenOn()) {
+ if (mResolvedLongPressOnPowerBehavior == LONG_PRESS_POWER_TORCH &&
+ (!isScreenOn() || isDozeMode())) {
wakeUpFromPowerKey(SystemClock.uptimeMillis());
}
}
}
}
+ private boolean isDozeMode() {
+ IDreamManager dreamManager = getDreamManager();
+
+ try {
+ if (dreamManager != null && dreamManager.isDreaming()) {
+ return true;
+ }
+ } catch (RemoteException e) {
+ Slog.e(TAG, "RemoteException when checking if dreaming", e);
+ }
+ return false;
+ }
+
private int getResolvedLongPressOnPowerBehavior() {
if (FactoryTest.isLongPressOnPowerOffEnabled()) {
return LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM;
}
- if (mTorchLongPressPowerEnabled && !isScreenOn()) {
+ if (mTorchLongPressPowerEnabled && (!isScreenOn() || isDozeMode())) {
return LONG_PRESS_POWER_TORCH;
}
return mLongPressOnPowerBehavior;
return false;
}
+ final boolean isDozing = isDozeMode();
+
+ if (event != null && isVolumeKey(event) && isDozing) {
+ return false;
+ }
+
// Send events to keyguard while the screen is on and it's showing.
if (isKeyguardShowingAndNotOccluded() && !displayOff) {
return true;
// Send events to a dozing dream even if the screen is off since the dream
// is in control of the state of the screen.
- IDreamManager dreamManager = getDreamManager();
-
- try {
- if (dreamManager != null && dreamManager.isDreaming() && !dreamManager.isDozing()) {
- return true;
- }
- } catch (RemoteException e) {
- Slog.e(TAG, "RemoteException when checking if dreaming", e);
+ if (isDozing) {
+ return true;
}
// Otherwise, consume events since the user can't see what is being
return false;
}
+ private boolean isVolumeKey(KeyEvent event) {
+ return event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN
+ || event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP;
+ }
+
private void dispatchDirectAudioEvent(KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN) {
return;