CustomDoze: raise2wake: check proximity before wakeup
* to avoid having unnecessary wakeups when phone inside the pocket
Adapted for BlissRom by: Pietro Ivan Cerrato <ivan@cerrato.biz>
Change-Id: Ie8bdbcdd885af58ddd7b8fe21776ef331e7614e2
diff --git a/src/com/custom/ambient/display/TiltSensor.java b/src/com/custom/ambient/display/TiltSensor.java
index 6362604..40b7e3f 100644
--- a/src/com/custom/ambient/display/TiltSensor.java
+++ b/src/com/custom/ambient/display/TiltSensor.java
@@ -42,6 +42,9 @@
private WakeLock mSensorWakeLock;
private Context mContext;
+ private Sensor mProximitySensor;
+ private boolean mInsidePocket = false;
+
private long mEntryTimestamp;
public TiltSensor(Context context) {
@@ -57,6 +60,7 @@
} else {
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_TILT_DETECTOR);
}
+ mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);
}
mSensorWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"SensorWakeLock");
@@ -74,7 +78,10 @@
mEntryTimestamp = SystemClock.elapsedRealtime();
- if (event.values[0] == 1) {
+ if (!raiseToWakeEnabled && !Utils.pocketGestureEnabled(mContext))
+ mInsidePocket = false;
+
+ if (event.values[0] == 1 && !mInsidePocket) {
if (raiseToWakeEnabled) {
mSensorWakeLock.acquire(WAKELOCK_TIMEOUT_MS);
mPowerManager.wakeUp(SystemClock.uptimeMillis(),
@@ -90,16 +97,35 @@
/* Empty */
}
+ private SensorEventListener mProximityListener = new SensorEventListener() {
+ @Override
+ public void onSensorChanged(SensorEvent event) {
+ mInsidePocket = event.values[0] < mProximitySensor.getMaximumRange();
+ }
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
+ // stub
+ }
+ };
+
protected void enable() {
if (DEBUG) Log.d(TAG, "Enabling");
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
+ if (Utils.raiseToWakeGestureEnabled(mContext)) {
+ mSensorManager.registerListener(mProximityListener, mProximitySensor,
+ SensorManager.SENSOR_DELAY_NORMAL);
+ }
mEntryTimestamp = SystemClock.elapsedRealtime();
}
protected void disable() {
if (DEBUG) Log.d(TAG, "Disabling");
mSensorManager.unregisterListener(this, mSensor);
+ if (Utils.raiseToWakeGestureEnabled(mContext)) {
+ mSensorManager.unregisterListener(mProximityListener, mProximitySensor);
+ }
}
}