summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/values/strings.xml4
-rw-r--r--packages/SystemUI/res/xml/tuner_prefs.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java11
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java6
9 files changed, 56 insertions, 3 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 79efb0d59214..b825cfb5f903 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. -->
<string name="tuner_doze" translatable="false">Ambient Display</string>
+ <!-- Ambient display, Sensors wake up device of the tuner. Non-translatable since it should
+ not appear on production builds ever. -->
+ <string name="tuner_doze_sensors_wake_up_fully" translatable="false">Wake up device on double tap or lift</string>
+
<!-- Ambient display always-on of the tuner. Non-translatable since it should
not appear on production builds ever. -->
<string name="tuner_doze_always_on" translatable="false">Always on</string>
diff --git a/packages/SystemUI/res/xml/tuner_prefs.xml b/packages/SystemUI/res/xml/tuner_prefs.xml
index 90364b98ea3f..85f12b5baabb 100644
--- a/packages/SystemUI/res/xml/tuner_prefs.xml
+++ b/packages/SystemUI/res/xml/tuner_prefs.xml
@@ -131,6 +131,11 @@
android:title="@string/tuner_doze_always_on"
sysui:defValue="false" />
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="doze_sensors_wake_up_fully"
+ android:title="@string/tuner_doze_sensors_wake_up_fully"
+ sysui:defValue="false" />
+
</PreferenceScreen>
-->
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
index 7c15096a5f9a..b3a0eb7baa72 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
@@ -91,8 +91,7 @@ public class DozeFactory {
@Override
public void requestState(DozeProvider.DozeState state) {
if (state == DozeProvider.DozeState.WAKE_UP) {
- PowerManager pm = context.getSystemService(PowerManager.class);
- pm.wakeUp(SystemClock.uptimeMillis(), "com.android.systemui:NODOZE");
+ machine.wakeUp();
return;
}
machine.requestState(implState(state));
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
index 6a868d53d409..c9eb790c695e 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
@@ -158,6 +158,11 @@ public class DozeMachine {
return mState;
}
+ /** Requests the PowerManager to wake up now. */
+ public void wakeUp() {
+ mDozeService.requestWakeUp();
+ }
+
private boolean isExecutingTransition() {
return !mQueuedRequests.isEmpty();
}
@@ -300,5 +305,8 @@ public class DozeMachine {
/** Request a display state. See {@link android.view.Display#STATE_DOZE}. */
void setDozeScreenState(int state);
+
+ /** Request waking up. */
+ void requestWakeUp();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 6186df14ef3f..e55a59722385 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -16,6 +16,8 @@
package com.android.systemui.doze;
+import android.os.PowerManager;
+import android.os.SystemClock;
import android.service.dreams.DreamService;
import android.util.Log;
@@ -72,4 +74,10 @@ public class DozeService extends DreamService implements DozeMachine.Service {
mDozeMachine.dump(pw);
}
}
+
+ @Override
+ public void requestWakeUp() {
+ PowerManager pm = getSystemService(PowerManager.class);
+ pm.wakeUp(SystemClock.uptimeMillis(), "com.android.systemui:NODOZE");
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index db5a3921db9d..b5c7dd3bfc66 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 0e074c7b8710..883a66b59531 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));
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
index c3948258f11c..32afee9744d5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
@@ -289,4 +289,12 @@ public class DozeMachineTest {
assertEquals(DOZE_PULSING, mMachine.getState());
}
+
+ @Test
+ @UiThreadTest
+ public void testWakeUp_wakesUp() {
+ mMachine.wakeUp();
+
+ assertTrue(mServiceFake.requestedWakeup);
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java
index d12fc2cf33a0..c1e7fe46de8e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java
@@ -22,6 +22,7 @@ public class DozeServiceFake implements DozeMachine.Service {
public boolean finished;
public int screenState;
+ public boolean requestedWakeup;
public DozeServiceFake() {
reset();
@@ -41,4 +42,9 @@ public class DozeServiceFake implements DozeMachine.Service {
finished = false;
screenState = Display.STATE_UNKNOWN;
}
+
+ @Override
+ public void requestWakeUp() {
+ requestedWakeup = true;
+ }
}