diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 77de9a2c995cb..112120ac6b215 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -1725,6 +1725,10 @@
not appear on production builds ever. -->
Ambient Display
+
+ Wake up device on double tap or lift
+
Always on
diff --git a/packages/SystemUI/res/xml/tuner_prefs.xml b/packages/SystemUI/res/xml/tuner_prefs.xml
index c354811800756..e566213e9ff43 100644
--- a/packages/SystemUI/res/xml/tuner_prefs.xml
+++ b/packages/SystemUI/res/xml/tuner_prefs.xml
@@ -143,6 +143,11 @@
android:title="@string/tuner_doze_always_on"
sysui:defValue="false" />
+
+
-->
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index db5a3921db9de..b5c7dd3bfc668 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -97,7 +97,11 @@ public class DozeTriggers implements DozeMachine.Part {
}
private void onSensor(int pulseReason, boolean sensorPerformedProxCheck) {
- requestPulse(pulseReason, sensorPerformedProxCheck);
+ if (mDozeParameters.getSensorsWakeUpFully()) {
+ mMachine.wakeUp();
+ } else {
+ requestPulse(pulseReason, sensorPerformedProxCheck);
+ }
if (pulseReason == DozeLog.PULSE_REASON_SENSOR_PICKUP) {
final long timeSinceNotification =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 0e074c7b87102..883a66b595311 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -31,6 +31,7 @@ import java.io.PrintWriter;
public class DozeParameters {
private static final int MAX_DURATION = 60 * 1000;
+ public static final String DOZE_SENSORS_WAKE_UP_FULLY = "doze_sensors_wake_up_fully";
private final Context mContext;
@@ -56,6 +57,10 @@ public class DozeParameters {
pw.print(" getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
pw.print(" getPickupSubtypePerformsProxCheck(): ");pw.println(
dumpPickupSubtypePerformsProxCheck());
+ if (Build.IS_DEBUGGABLE) {
+ pw.print(" getAlwaysOn(): "); pw.println(getAlwaysOn());
+ pw.print(" getSensorsWakeUpFully(): "); pw.println(getSensorsWakeUpFully());
+ }
}
private String dumpPickupSubtypePerformsProxCheck() {
@@ -118,6 +123,12 @@ public class DozeParameters {
Settings.Secure.DOZE_ALWAYS_ON, 0, UserHandle.USER_CURRENT) != 0;
}
+ public boolean getSensorsWakeUpFully() {
+ return Build.IS_DEBUGGABLE
+ && Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ DOZE_SENSORS_WAKE_UP_FULLY, 0, UserHandle.USER_CURRENT) != 0;
+ }
+
private boolean getBoolean(String propName, int resId) {
return SystemProperties.getBoolean(propName, mContext.getResources().getBoolean(resId));
}