summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
authorTanguy Pruvot <tanguy.pruvot@gmail.com>2012-02-04 09:16:35 +0100
committerSteve Kondik <shade@chemlab.org>2012-02-18 11:47:45 -0800
commit5855e94087c98263b4764e8d91d94a41264f32fb (patch)
tree00dbb3d2d780cb00687c3a4c5d2e500c58fb5037 /policy
parentb98591a79effbcb79fe344b2ddd7dd86c941dd73 (diff)
downloadframeworks_base-5855e94087c98263b4764e8d91d94a41264f32fb.zip
frameworks_base-5855e94087c98263b4764e8d91d94a41264f32fb.tar.gz
frameworks_base-5855e94087c98263b4764e8d91d94a41264f32fb.tar.bz2
wake phone with volume keys
From CM71, for devices where power button is hard to press Change-Id: I402394d2599e18b70283a7e8b9d5d6c8ce1e38c7
Diffstat (limited to 'policy')
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 0322658..0f8c81b 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -352,6 +352,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
WindowState mFocusedWindow;
IApplicationToken mFocusedApp;
+ // Behavior of volume wake
+ boolean mVolumeWakeScreen;
+
private final InputHandler mPointerLocationInputHandler = new BaseInputHandler() {
@Override
public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finishedCallback) {
@@ -479,6 +482,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR), false, this);
resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.VOLUME_WAKE_SCREEN), false, this);
+ resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.ACCELEROMETER_ROTATION), false, this);
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.USER_ROTATION), false, this);
@@ -949,6 +954,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mIncallPowerBehavior = Settings.Secure.getInt(resolver,
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR,
Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_DEFAULT);
+ mVolumeWakeScreen = (Settings.System.getInt(resolver,
+ Settings.System.VOLUME_WAKE_SCREEN, 0) == 1);
int accelerometerDefault = Settings.System.getInt(resolver,
Settings.System.ACCELEROMETER_ROTATION, DEFAULT_ACCELEROMETER_ROTATION);
@@ -2745,7 +2752,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) {
final boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
final boolean canceled = event.isCanceled();
- final int keyCode = event.getKeyCode();
+ int keyCode = event.getKeyCode();
final boolean isInjected = (policyFlags & WindowManagerPolicy.FLAG_INJECTED) != 0;
@@ -2790,7 +2797,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
result = 0;
final boolean isWakeKey = (policyFlags
- & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
+ & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0
+ || ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) && mVolumeWakeScreen)
+ || ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) && mVolumeWakeScreen);
+
+ // make sure keyevent get's handled as power key on volume-wake
+ if(!isScreenOn && mVolumeWakeScreen && isWakeKey && ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)
+ || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)))
+ keyCode=KeyEvent.KEYCODE_POWER;
+
if (down && isWakeKey) {
if (keyguardActive) {
// If the keyguard is showing, let it decide what to do with the wake key.