diff options
5 files changed, 31 insertions, 6 deletions
diff --git a/doze/res/xml/doze_settings.xml b/doze/res/xml/doze_settings.xml index dd6e19b..5708c65 100644 --- a/doze/res/xml/doze_settings.xml +++ b/doze/res/xml/doze_settings.xml @@ -16,6 +16,12 @@ --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + <SwitchPreference + android:key="wake_on_gesture" + android:defaultValue="false" + android:title="@string/wake_on_gesture_title" + android:summary="@string/wake_on_gesture_summary" /> + <PreferenceCategory android:key="tilt_sensor" android:title="@string/tilt_sensor_title"> diff --git a/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java b/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java index 52458d1..7769edd 100644 --- a/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java +++ b/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java @@ -46,6 +46,7 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer private TextView mTextView; private View mSwitchBar; + private SwitchPreference mWakeOnGesturePreference; private SwitchPreference mPickUpPreference; private SwitchPreference mHandwavePreference; private SwitchPreference mPocketPreference; @@ -66,6 +67,10 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer boolean dozeEnabled = Utils.isDozeEnabled(getActivity()); + mWakeOnGesturePreference = (SwitchPreference) findPreference(Utils.WAKE_ON_GESTURE_KEY); + mWakeOnGesturePreference.setEnabled(dozeEnabled); + mWakeOnGesturePreference.setOnPreferenceChangeListener(this); + PreferenceCategory proximitySensorCategory = (PreferenceCategory) getPreferenceScreen().findPreference(Utils.CATEG_PROX_SENSOR); @@ -130,6 +135,7 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer mTextView.setText(getString(isChecked ? R.string.switch_bar_on : R.string.switch_bar_off)); mSwitchBar.setActivated(isChecked); + mWakeOnGesturePreference.setEnabled(isChecked); mPickUpPreference.setEnabled(isChecked); mHandwavePreference.setEnabled(isChecked); mPocketPreference.setEnabled(isChecked); diff --git a/doze/src/org/lineageos/settings/doze/ProximitySensor.java b/doze/src/org/lineageos/settings/doze/ProximitySensor.java index 71594ff..7d0bc39 100644 --- a/doze/src/org/lineageos/settings/doze/ProximitySensor.java +++ b/doze/src/org/lineageos/settings/doze/ProximitySensor.java @@ -63,7 +63,7 @@ public class ProximitySensor implements SensorEventListener { boolean isNear = event.values[0] < mSensor.getMaximumRange(); if (mSawNear && !isNear) { if (shouldPulse(event.timestamp)) { - Utils.launchDozePulse(mContext); + Utils.wakeOrLaunchDozePulse(mContext); } } else { mInPocketTime = event.timestamp; diff --git a/doze/src/org/lineageos/settings/doze/TiltSensor.java b/doze/src/org/lineageos/settings/doze/TiltSensor.java index 6598127..cdaec9b 100644 --- a/doze/src/org/lineageos/settings/doze/TiltSensor.java +++ b/doze/src/org/lineageos/settings/doze/TiltSensor.java @@ -67,7 +67,7 @@ public class TiltSensor implements SensorEventListener { } if (event.values[0] == 1) { - Utils.launchDozePulse(mContext); + Utils.wakeOrLaunchDozePulse(mContext); } } diff --git a/doze/src/org/lineageos/settings/doze/Utils.java b/doze/src/org/lineageos/settings/doze/Utils.java index 490095e..e6658f6 100644 --- a/doze/src/org/lineageos/settings/doze/Utils.java +++ b/doze/src/org/lineageos/settings/doze/Utils.java @@ -20,6 +20,8 @@ package org.lineageos.settings.doze; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.os.PowerManager; +import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; @@ -30,6 +32,7 @@ import static android.provider.Settings.Secure.DOZE_ENABLED; public final class Utils { + protected static final String WAKE_ON_GESTURE_KEY = "wake_on_gesture"; protected static final String CATEG_PROX_SENSOR = "proximity_sensor"; protected static final String GESTURE_PICK_UP_KEY = "gesture_pick_up"; protected static final String GESTURE_HAND_WAVE_KEY = "gesture_hand_wave"; @@ -79,10 +82,16 @@ public final class Utils { DOZE_ENABLED, enable ? 1 : 0); } - protected static void launchDozePulse(Context context) { - if (DEBUG) Log.d(TAG, "Launch doze pulse"); - context.sendBroadcastAsUser(new Intent(DOZE_INTENT), - new UserHandle(UserHandle.USER_CURRENT)); + protected static void wakeOrLaunchDozePulse(Context context) { + if (isWakeOnGestureEnabled(context)) { + if (DEBUG) Log.d(TAG, "Wake up display"); + PowerManager powerManager = context.getSystemService(PowerManager.class); + powerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE, TAG); + } else { + if (DEBUG) Log.d(TAG, "Launch doze pulse"); + context.sendBroadcastAsUser( + new Intent(DOZE_INTENT), new UserHandle(UserHandle.USER_CURRENT)); + } } protected static boolean isGestureEnabled(Context context, String gesture) { @@ -90,6 +99,10 @@ public final class Utils { .getBoolean(gesture, false); } + protected static boolean isWakeOnGestureEnabled(Context context) { + return isGestureEnabled(context, WAKE_ON_GESTURE_KEY); + } + protected static boolean isPickUpEnabled(Context context) { return isGestureEnabled(context, GESTURE_PICK_UP_KEY); } |