Merge "Allow double tap power to trigger camera during device is sleeping" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
bc4d799c95
@@ -519,15 +519,6 @@ public class GestureLauncherService extends SystemService {
|
|||||||
// user has completed setup.
|
// user has completed setup.
|
||||||
return intercept && isUserSetupComplete();
|
return intercept && isUserSetupComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCameraDoubleTapPowerEnabled() {
|
|
||||||
return mCameraDoubleTapPowerEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEmergencyGestureEnabled() {
|
|
||||||
return mEmergencyGestureEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if camera was launched, false otherwise.
|
* @return true if camera was launched, false otherwise.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -904,8 +904,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// handled by single key or another power key policy.
|
// handled by single key or another power key policy.
|
||||||
|
if (!mSingleKeyGestureDetector.isKeyIntercepted(KEYCODE_POWER)) {
|
||||||
mSingleKeyGestureDetector.reset();
|
mSingleKeyGestureDetector.reset();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
finishPowerKeyPress();
|
finishPowerKeyPress();
|
||||||
}
|
}
|
||||||
@@ -918,7 +920,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void powerPress(long eventTime, int count, boolean beganFromNonInteractive) {
|
private void powerPress(long eventTime, int count, boolean beganFromNonInteractive) {
|
||||||
mCameraGestureTriggered = false;
|
|
||||||
if (mDefaultDisplayPolicy.isScreenOnEarly() && !mDefaultDisplayPolicy.isScreenOnFully()) {
|
if (mDefaultDisplayPolicy.isScreenOnEarly() && !mDefaultDisplayPolicy.isScreenOnFully()) {
|
||||||
Slog.i(TAG, "Suppressed redundant power key press while "
|
Slog.i(TAG, "Suppressed redundant power key press while "
|
||||||
+ "already in the process of turning the screen on.");
|
+ "already in the process of turning the screen on.");
|
||||||
@@ -1068,24 +1069,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int getMaxMultiPressPowerCount() {
|
private int getMaxMultiPressPowerCount() {
|
||||||
// GestureLauncherService could handle power multi tap gesture.
|
// The actual max power button press count is 5
|
||||||
if (mGestureLauncherService != null
|
// (EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD), which is coming from
|
||||||
&& mGestureLauncherService.isEmergencyGestureEnabled()) {
|
// GestureLauncherService.
|
||||||
return 5; // EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD
|
// To speed up the handling of single-press of power button inside SingleKeyGestureDetector,
|
||||||
}
|
// however, we limit the max count to the number of button presses actually handled by the
|
||||||
|
// SingleKeyGestureDetector.
|
||||||
if (mTriplePressOnPowerBehavior != MULTI_PRESS_POWER_NOTHING) {
|
if (mTriplePressOnPowerBehavior != MULTI_PRESS_POWER_NOTHING) {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
if (mDoublePressOnPowerBehavior != MULTI_PRESS_POWER_NOTHING) {
|
if (mDoublePressOnPowerBehavior != MULTI_PRESS_POWER_NOTHING) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mGestureLauncherService != null
|
|
||||||
&& mGestureLauncherService.isCameraDoubleTapPowerEnabled()) {
|
|
||||||
return 2; // CAMERA_POWER_TAP_COUNT_THRESHOLD
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1972,7 +1967,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
void onPress(long downTime) {
|
void onPress(long downTime) {
|
||||||
powerPress(downTime, 1 /*count*/,
|
powerPress(downTime, 1 /*count*/,
|
||||||
mSingleKeyGestureDetector.beganFromNonInteractive());
|
mSingleKeyGestureDetector.beganFromNonInteractive());
|
||||||
finishPowerKeyPress();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1995,7 +1989,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
@Override
|
@Override
|
||||||
void onMultiPress(long downTime, int count) {
|
void onMultiPress(long downTime, int count) {
|
||||||
powerPress(downTime, count, mSingleKeyGestureDetector.beganFromNonInteractive());
|
powerPress(downTime, count, mSingleKeyGestureDetector.beganFromNonInteractive());
|
||||||
finishPowerKeyPress();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3849,17 +3842,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
if (mGestureLauncherService == null) {
|
if (mGestureLauncherService == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
mCameraGestureTriggered = false;
|
||||||
final MutableBoolean outLaunched = new MutableBoolean(false);
|
final MutableBoolean outLaunched = new MutableBoolean(false);
|
||||||
final boolean gesturedServiceIntercepted = mGestureLauncherService.interceptPowerKeyDown(
|
mGestureLauncherService.interceptPowerKeyDown(event, interactive, outLaunched);
|
||||||
event, interactive, outLaunched);
|
if (!outLaunched.value) {
|
||||||
if (outLaunched.value) {
|
return false;
|
||||||
mCameraGestureTriggered = true;
|
|
||||||
}
|
}
|
||||||
if (outLaunched.value && mRequestedOrSleepingDefaultDisplay) {
|
mCameraGestureTriggered = true;
|
||||||
|
if (mRequestedOrSleepingDefaultDisplay) {
|
||||||
mCameraGestureTriggeredDuringGoingToSleep = true;
|
mCameraGestureTriggeredDuringGoingToSleep = true;
|
||||||
}
|
}
|
||||||
return gesturedServiceIntercepted;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4232,7 +4225,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
mDefaultDisplayRotation.updateOrientationListener();
|
mDefaultDisplayRotation.updateOrientationListener();
|
||||||
|
|
||||||
if (mKeyguardDelegate != null) {
|
if (mKeyguardDelegate != null) {
|
||||||
mKeyguardDelegate.onFinishedGoingToSleep(pmSleepReason, mCameraGestureTriggered);
|
mKeyguardDelegate.onFinishedGoingToSleep(pmSleepReason,
|
||||||
|
mCameraGestureTriggeredDuringGoingToSleep);
|
||||||
}
|
}
|
||||||
if (mDisplayFoldController != null) {
|
if (mDisplayFoldController != null) {
|
||||||
mDisplayFoldController.finishedGoingToSleep();
|
mDisplayFoldController.finishedGoingToSleep();
|
||||||
@@ -4428,6 +4422,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
// Called on the DisplayManager's DisplayPowerController thread.
|
// Called on the DisplayManager's DisplayPowerController thread.
|
||||||
@Override
|
@Override
|
||||||
public void screenTurnedOn(int displayId) {
|
public void screenTurnedOn(int displayId) {
|
||||||
|
if (DEBUG_WAKEUP) Slog.i(TAG, "Display " + displayId + " turned on...");
|
||||||
|
|
||||||
if (displayId != DEFAULT_DISPLAY) {
|
if (displayId != DEFAULT_DISPLAY) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -272,8 +272,10 @@ public final class SingleKeyGestureDetector {
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.i(TAG, "press key " + KeyEvent.keyCodeToString(event.getKeyCode()));
|
Log.i(TAG, "press key " + KeyEvent.keyCodeToString(event.getKeyCode()));
|
||||||
}
|
}
|
||||||
mActiveRule.onPress(downTime);
|
Message msg = mHandler.obtainMessage(MSG_KEY_DELAYED_PRESS, mActiveRule.mKeyCode,
|
||||||
reset();
|
1, downTime);
|
||||||
|
msg.setAsynchronous(true);
|
||||||
|
mHandler.sendMessage(msg);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,10 +318,7 @@ public final class SingleKeyGestureDetector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean isKeyIntercepted(int keyCode) {
|
boolean isKeyIntercepted(int keyCode) {
|
||||||
if (mActiveRule != null && mActiveRule.shouldInterceptKey(keyCode)) {
|
return mActiveRule != null && mActiveRule.shouldInterceptKey(keyCode);
|
||||||
return mHandledByLongPress;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean beganFromNonInteractive() {
|
boolean beganFromNonInteractive() {
|
||||||
|
|||||||
Reference in New Issue
Block a user