From 8078bf07d35842c7a095c401c44061e8e9df23bb Mon Sep 17 00:00:00 2001 From: saranya Date: Tue, 17 Apr 2018 15:52:08 +0530 Subject: [PATCH] GlobalActions: Handle 'sleep' action Some Intel platforms do not provide separate events for power key press and release. This makes it impossible to detect long press of power button. So, the solution is to handle only short press and add 'sleep' also as an option in GlobalActions menu. This patch handles 'sleep' option. Change-Id: Iaae59b324e5ba6eaed9e507fdaa8e5006535716c Tracked-On: OAM-56502 Signed-off-by: saranya Signed-off-by: Madhusudhan S --- core/res/res/values-zh-rCN/strings.xml | 1 + core/res/res/values-zh-rHK/strings.xml | 1 + core/res/res/values-zh-rTW/strings.xml | 1 + core/res/res/values/config.xml | 1 + core/res/res/values/strings.xml | 2 ++ core/res/res/values/symbols.xml | 1 + .../globalactions/GlobalActionsDialog.java | 35 ++++++++++++++++++++++ 7 files changed, 42 insertions(+) diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 5e2216234215..09f9d477e27f 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -216,6 +216,7 @@ "手机选项" "屏幕锁定" "关机" + "睡眠" "紧急呼救" "错误报告" "结束会话" diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 6baf66be5c40..cfdcaec87765 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -216,6 +216,7 @@ "手機選項" "螢幕鎖定" "關閉" + "休眠" "緊急" "錯誤報告" "結束工作階段" diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 3ff68f547983..4a720131ae35 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -216,6 +216,7 @@ "電話選項" "螢幕鎖定" "關機" + "休眠" "緊急電話" "錯誤報告" "結束" diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index da6b19dac1c7..330647b26bce 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2578,6 +2578,7 @@ power restart + sleep lockdown logout bugreport diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 230cc827263c..f0bf98c705b6 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -480,6 +480,8 @@ @string/sim_restart_button + Sleep + Emergency diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 237b25d1080a..77ea947721a8 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1759,6 +1759,7 @@ + diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index d232108ded40..4aad11b67d15 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -44,9 +44,11 @@ import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.os.PowerManager; import android.os.Messenger; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; @@ -126,6 +128,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, private static final String GLOBAL_ACTION_KEY_VOICEASSIST = "voiceassist"; private static final String GLOBAL_ACTION_KEY_ASSIST = "assist"; private static final String GLOBAL_ACTION_KEY_RESTART = "restart"; + private static final String GLOBAL_ACTION_KEY_SLEEP = "sleep"; private static final String GLOBAL_ACTION_KEY_LOGOUT = "logout"; private static final String GLOBAL_ACTION_KEY_SCREENSHOT = "screenshot"; @@ -357,6 +360,8 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, mItems.add(getAssistAction()); } else if (GLOBAL_ACTION_KEY_RESTART.equals(actionKey)) { mItems.add(new RestartAction()); + } else if (GLOBAL_ACTION_KEY_SLEEP.equals(actionKey)) { + mItems.add(new SleepAction()); } else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) { mItems.add(new ScreenshotAction()); } else if (GLOBAL_ACTION_KEY_LOGOUT.equals(actionKey)) { @@ -472,6 +477,36 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } + private final class SleepAction extends SinglePressAction implements LongPressAction { + private SleepAction() { + super(R.drawable.ic_restart, R.string.global_action_sleep); + } + + @Override + public boolean onLongPress() { + PowerManager mPowerManager = (PowerManager) + mContext.getSystemService(Context.POWER_SERVICE); + mPowerManager.goToSleep(SystemClock.uptimeMillis()); + return true; + } + + @Override + public boolean showDuringKeyguard() { + return true; + } + + @Override + public boolean showBeforeProvisioning() { + return true; + } + + @Override + public void onPress() { + PowerManager mPowerManager = (PowerManager) + mContext.getSystemService(Context.POWER_SERVICE); + mPowerManager.goToSleep(SystemClock.uptimeMillis()); + } + } private class ScreenshotAction extends SinglePressAction { public ScreenshotAction() { -- 2.11.0