diff options
3 files changed, 35 insertions, 17 deletions
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 1152eeae9f4d..d799721a27fa 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -232,6 +232,9 @@ <!-- Doze: should the pickup sensor be used as a pulse signal? --> <bool name="doze_pulse_on_pick_up">false</bool> + <!-- Doze: check proximity sensor before pulsing? --> + <bool name="doze_proximity_check_before_pulse">true</bool> + <!-- Doze: should notifications be used as a pulse signal? --> <bool name="doze_pulse_on_notifications">true</bool> diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java index 8f14abb20c25..89b3e5bd6e2f 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java @@ -202,6 +202,12 @@ public class DozeService extends DreamService { // Here we need a wakelock to stay awake until the pulse is finished. mWakeLock.acquire(); mPulsing = true; + if (!mDozeParameters.getProxCheckBeforePulse()) { + // skip proximity check + continuePulsing(); + return; + } + // perform a proximity check before pulsing final long start = SystemClock.uptimeMillis(); new ProximityCheck() { @Override @@ -216,28 +222,32 @@ public class DozeService extends DreamService { } // not in-pocket, continue pulsing - mHost.pulseWhileDozing(new DozeHost.PulseCallback() { - @Override - public void onPulseStarted() { - if (mPulsing && mDreaming) { - turnDisplayOn(); - } - } - - @Override - public void onPulseFinished() { - if (mPulsing && mDreaming) { - mPulsing = false; - turnDisplayOff(); - } - mWakeLock.release(); // needs to be unconditional to balance acquire - } - }); + continuePulsing(); } }.check(); } } + private void continuePulsing() { + mHost.pulseWhileDozing(new DozeHost.PulseCallback() { + @Override + public void onPulseStarted() { + if (mPulsing && mDreaming) { + turnDisplayOn(); + } + } + + @Override + public void onPulseFinished() { + if (mPulsing && mDreaming) { + mPulsing = false; + turnDisplayOff(); + } + mWakeLock.release(); // needs to be unconditional to balance acquire + } + }); + } + private void turnDisplayOff() { if (DEBUG) Log.d(mTag, "Display off"); setDozeScreenState(Display.STATE_OFF); 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 6fd67580226f..3d4a1e08277b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -55,6 +55,7 @@ public class DozeParameters { pw.print(" getVibrateOnSigMotion(): "); pw.println(getVibrateOnSigMotion()); pw.print(" getPulseOnPickup(): "); pw.println(getPulseOnPickup()); pw.print(" getVibrateOnPickup(): "); pw.println(getVibrateOnPickup()); + pw.print(" getProxCheckBeforePulse(): "); pw.println(getProxCheckBeforePulse()); pw.print(" getPulseOnNotifications(): "); pw.println(getPulseOnNotifications()); pw.print(" getPulseSchedule(): "); pw.println(getPulseSchedule()); pw.print(" getPulseScheduleResets(): "); pw.println(getPulseScheduleResets()); @@ -101,6 +102,10 @@ public class DozeParameters { return SystemProperties.getBoolean("doze.vibrate.pickup", false); } + public boolean getProxCheckBeforePulse() { + return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse); + } + public boolean getPulseOnNotifications() { return getBoolean("doze.pulse.notifications", R.bool.doze_pulse_on_notifications); } |