From 1db9129db8c86e9843f59e645fe21a41e89fbb99 Mon Sep 17 00:00:00 2001 From: Arian Date: Wed, 14 Oct 2020 23:06:47 +0200 Subject: [PATCH] davinci: parts: Allow to wake the screen instead of pulsing Co-authored-by: Nauval Rizky Co-authored-by: Fabian Leutenegger Change-Id: I1e74f8eafa51843e77d2d8c514c646a4494327cd --- parts/res/drawable/ic_doze_wake.xml | 9 ++++++++ parts/res/xml/doze_settings.xml | 7 ++++++ .../settings/doze/DozeSettingsFragment.java | 9 ++++++-- .../lineageos/settings/doze/DozeUtils.java | 23 ++++++++++++++----- .../lineageos/settings/doze/PickupSensor.java | 2 +- .../settings/doze/ProximitySensor.java | 2 +- 6 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 parts/res/drawable/ic_doze_wake.xml diff --git a/parts/res/drawable/ic_doze_wake.xml b/parts/res/drawable/ic_doze_wake.xml new file mode 100644 index 0000000..30139f1 --- /dev/null +++ b/parts/res/drawable/ic_doze_wake.xml @@ -0,0 +1,9 @@ + + + + diff --git a/parts/res/xml/doze_settings.xml b/parts/res/xml/doze_settings.xml index e9d6b9e..ff39df5 100644 --- a/parts/res/xml/doze_settings.xml +++ b/parts/res/xml/doze_settings.xml @@ -25,6 +25,13 @@ android:summary="@string/ambient_display_always_on_summary" android:persistent="false" /> + + diff --git a/parts/src/org/lineageos/settings/doze/DozeSettingsFragment.java b/parts/src/org/lineageos/settings/doze/DozeSettingsFragment.java index 4afec25..ea229a5 100644 --- a/parts/src/org/lineageos/settings/doze/DozeSettingsFragment.java +++ b/parts/src/org/lineageos/settings/doze/DozeSettingsFragment.java @@ -48,7 +48,7 @@ public class DozeSettingsFragment extends PreferenceFragment private View mSwitchBar; private SwitchPreference mAlwaysOnDisplayPreference; - + private SwitchPreference mWakeOnGesturePreference; private SwitchPreference mPickUpPreference; private SwitchPreference mHandwavePreference; private SwitchPreference mPocketPreference; @@ -74,6 +74,10 @@ public class DozeSettingsFragment extends PreferenceFragment mAlwaysOnDisplayPreference.setChecked(DozeUtils.isAlwaysOnEnabled(getActivity())); mAlwaysOnDisplayPreference.setOnPreferenceChangeListener(this); + mWakeOnGesturePreference = (SwitchPreference) findPreference(DozeUtils.WAKE_ON_GESTURE_KEY); + mWakeOnGesturePreference.setEnabled(dozeEnabled); + mWakeOnGesturePreference.setOnPreferenceChangeListener(this); + PreferenceCategory pickupSensorCategory = (PreferenceCategory) getPreferenceScreen().findPreference( DozeUtils.CATEG_PICKUP_SENSOR); @@ -102,6 +106,7 @@ public class DozeSettingsFragment extends PreferenceFragment if (!DozeUtils.alwaysOnDisplayAvailable(getActivity())) { getPreferenceScreen().removePreference(mAlwaysOnDisplayPreference); } else { + mWakeOnGesturePreference.setDependency(DozeUtils.ALWAYS_ON_DISPLAY); pickupSensorCategory.setDependency(DozeUtils.ALWAYS_ON_DISPLAY); proximitySensorCategory.setDependency(DozeUtils.ALWAYS_ON_DISPLAY); } @@ -161,7 +166,7 @@ public class DozeSettingsFragment extends PreferenceFragment mAlwaysOnDisplayPreference.setChecked(false); } mAlwaysOnDisplayPreference.setEnabled(isChecked); - + mWakeOnGesturePreference.setEnabled(isChecked); mPickUpPreference.setEnabled(isChecked); mHandwavePreference.setEnabled(isChecked); mPocketPreference.setEnabled(isChecked); diff --git a/parts/src/org/lineageos/settings/doze/DozeUtils.java b/parts/src/org/lineageos/settings/doze/DozeUtils.java index 6ca507c..31814ac 100644 --- a/parts/src/org/lineageos/settings/doze/DozeUtils.java +++ b/parts/src/org/lineageos/settings/doze/DozeUtils.java @@ -23,6 +23,8 @@ import android.content.pm.PackageManager; import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.Sensor; import android.hardware.SensorManager; +import android.os.PowerManager; +import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; @@ -38,7 +40,7 @@ public final class DozeUtils { private static final String DOZE_INTENT = "com.android.systemui.doze.pulse"; protected static final String ALWAYS_ON_DISPLAY = "always_on_display"; - + protected static final String WAKE_ON_GESTURE_KEY = "wake_on_gesture"; protected static final String CATEG_PICKUP_SENSOR = "pickup_sensor"; protected static final String CATEG_PROX_SENSOR = "proximity_sensor"; @@ -85,11 +87,16 @@ public final class DozeUtils { return Settings.Secure.getInt(context.getContentResolver(), DOZE_ENABLED, 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 enableAlwaysOn(Context context, boolean enable) { @@ -115,6 +122,10 @@ public final class DozeUtils { return PreferenceManager.getDefaultSharedPreferences(context).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); } diff --git a/parts/src/org/lineageos/settings/doze/PickupSensor.java b/parts/src/org/lineageos/settings/doze/PickupSensor.java index 643ec2f..947747e 100644 --- a/parts/src/org/lineageos/settings/doze/PickupSensor.java +++ b/parts/src/org/lineageos/settings/doze/PickupSensor.java @@ -64,7 +64,7 @@ public class PickupSensor implements SensorEventListener { mEntryTimestamp = SystemClock.elapsedRealtime(); if (event.values[0] == 1) { - DozeUtils.launchDozePulse(mContext); + DozeUtils.wakeOrLaunchDozePulse(mContext); } } diff --git a/parts/src/org/lineageos/settings/doze/ProximitySensor.java b/parts/src/org/lineageos/settings/doze/ProximitySensor.java index f887623..ee41396 100644 --- a/parts/src/org/lineageos/settings/doze/ProximitySensor.java +++ b/parts/src/org/lineageos/settings/doze/ProximitySensor.java @@ -60,7 +60,7 @@ public class ProximitySensor implements SensorEventListener { boolean isNear = event.values[0] < mSensor.getMaximumRange(); if (mSawNear && !isNear) { if (shouldPulse(event.timestamp)) { - DozeUtils.launchDozePulse(mContext); + DozeUtils.wakeOrLaunchDozePulse(mContext); } } else { mInPocketTime = event.timestamp;