doze: Introduce raise to wake gesture

* Highly inspired by iOS raise to wake

- Adapted to OnePlus sdm845 doze

doze: Add min interval for raise2wake

* avoid having early wakeup
* also fix typo in acquire timeout

doze: Enable pickup when raise to wake is toggled

- This is needed in order for raise to wake to function properly.

doze: Fix pickup status for raise to wake

Co-authored-by: AnierinB <anierinb@evolution-x.org>
Co-authored-by: AshutoshSundresh <ashutoshsundresh@gmail.com>
Co-authored-by: LuK1337 <priv.luk@gmail.com>
Signed-off-by: AnierinB <anierinb@evolution-x.org>
Signed-off-by: Omkar Chandorkar <gotenksIN@aosip.dev>
Signed-off-by: LuK1337 <priv.luk@gmail.com>
Change-Id: I5df0c4f11f1b24ab813abc393960c5f03f5fab1f
This commit is contained in:
Nauval Rizky
2020-01-31 11:57:48 +09:00
committed by LuK1337
parent 3887783596
commit 0d2a7ae425
5 changed files with 62 additions and 9 deletions

View File

@@ -34,6 +34,7 @@ import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener;
import androidx.preference.PreferenceCategory;
@@ -48,7 +49,7 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
private SwitchPreference mAlwaysOnDisplayPreference;
private SwitchPreference mPickUpPreference;
private ListPreference mPickUpPreference;
private SwitchPreference mPocketPreference;
private Handler mHandler = new Handler();
@@ -77,7 +78,7 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
PreferenceCategory proximitySensorCategory = (PreferenceCategory) getPreferenceScreen().
findPreference(Utils.CATEG_PROX_SENSOR);
mPickUpPreference = (SwitchPreference) findPreference(Utils.GESTURE_PICK_UP_KEY);
mPickUpPreference = (ListPreference) findPreference(Utils.GESTURE_PICK_UP_KEY);
mPickUpPreference.setEnabled(dozeEnabled);
mPickUpPreference.setOnPreferenceChangeListener(this);

View File

@@ -22,6 +22,8 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.SystemClock;
import android.util.Log;
@@ -35,9 +37,13 @@ public class PickupSensor implements SensorEventListener {
private static final String TAG = "PickupSensor";
private static final int MIN_PULSE_INTERVAL_MS = 2500;
private static final int MIN_WAKEUP_INTERVAL_MS = 1000;
private static final int WAKELOCK_TIMEOUT_MS = 300;
private PowerManager mPowerManager;
private SensorManager mSensorManager;
private Sensor mSensor;
private WakeLock mWakeLock;
private Context mContext;
private ExecutorService mExecutorService;
@@ -45,8 +51,10 @@ public class PickupSensor implements SensorEventListener {
public PickupSensor(Context context) {
mContext = context;
mPowerManager = mContext.getSystemService(PowerManager.class);
mSensorManager = mContext.getSystemService(SensorManager.class);
mSensor = Utils.getSensor(mSensorManager, "oneplus.sensor.pickup");
mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
mExecutorService = Executors.newSingleThreadExecutor();
}
@@ -66,7 +74,13 @@ public class PickupSensor implements SensorEventListener {
mEntryTimestamp = SystemClock.elapsedRealtime();
if (event.values[0] == 1) {
Utils.launchDozePulse(mContext);
if (Utils.isPickUpSetToWake(mContext)) {
mWakeLock.acquire(WAKELOCK_TIMEOUT_MS);
mPowerManager.wakeUp(SystemClock.uptimeMillis(),
PowerManager.WAKE_REASON_GESTURE, TAG);
} else {
Utils.launchDozePulse(mContext);
}
}
}

View File

@@ -42,7 +42,7 @@ public final class Utils {
protected static final String CATEG_PICKUP_SENSOR = "pickup_sensor";
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_PICK_UP_KEY = "gesture_pick_up_type";
protected static final String GESTURE_POCKET_KEY = "gesture_pocket";
protected static void startService(Context context) {
@@ -101,7 +101,13 @@ public final class Utils {
}
protected static boolean isPickUpEnabled(Context context) {
return isGestureEnabled(context, GESTURE_PICK_UP_KEY);
return !PreferenceManager.getDefaultSharedPreferences(context)
.getString(GESTURE_PICK_UP_KEY, "0").equals("0");
}
protected static boolean isPickUpSetToWake(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getString(GESTURE_PICK_UP_KEY, "0").equals("2");
}
protected static boolean isPocketEnabled(Context context) {