Merge "Keep secondary prox registered when covered." into rvc-d1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f7eacab7ba
@@ -83,20 +83,21 @@ public class ProximitySensor implements ThresholdSensor {
|
|||||||
private ThresholdSensor.Listener mSecondaryEventListener = new ThresholdSensor.Listener() {
|
private ThresholdSensor.Listener mSecondaryEventListener = new ThresholdSensor.Listener() {
|
||||||
@Override
|
@Override
|
||||||
public void onThresholdCrossed(ThresholdSensorEvent event) {
|
public void onThresholdCrossed(ThresholdSensorEvent event) {
|
||||||
// This sensor should only be used briefly. Turn it off as soon as we get a reading.
|
|
||||||
mSecondaryThresholdSensor.pause();
|
|
||||||
|
|
||||||
// Only check the secondary as long as the primary thinks we're near.
|
// Only check the secondary as long as the primary thinks we're near.
|
||||||
if (!mLastPrimaryEvent.getBelow()) {
|
if (!mLastPrimaryEvent.getBelow()) {
|
||||||
|
mSecondaryThresholdSensor.pause();
|
||||||
mCancelSecondaryRunnable = null;
|
mCancelSecondaryRunnable = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logDebug("Secondary sensor event: " + event.getBelow() + ".");
|
logDebug("Secondary sensor event: " + event.getBelow() + ".");
|
||||||
|
|
||||||
// Check this sensor again in a moment.
|
// This sensor should only be used briefly when uncovered.
|
||||||
mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed(
|
if (!event.getBelow()) {
|
||||||
mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS);
|
mSecondaryThresholdSensor.pause();
|
||||||
|
// Check this sensor again in a moment.
|
||||||
|
mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed(
|
||||||
|
mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS);
|
||||||
|
}
|
||||||
onSensorEvent(event);
|
onSensorEvent(event);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class ThresholdSensorImpl implements ThresholdSensor {
|
|||||||
@Override
|
@Override
|
||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
boolean below = event.values[0] < mThreshold;
|
boolean below = event.values[0] < mThreshold;
|
||||||
boolean above = event.values[0] > mThresholdLatch;
|
boolean above = event.values[0] >= mThresholdLatch;
|
||||||
logDebug("Sensor value: " + event.values[0]);
|
logDebug("Sensor value: " + event.values[0]);
|
||||||
onSensorEvent(below, above, event.timestamp);
|
onSensorEvent(below, above, event.timestamp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,10 +86,9 @@ public class ProximitySensorDualTest extends SysuiTestCase {
|
|||||||
// Trigger second sensor.
|
// Trigger second sensor.
|
||||||
mThresholdSensorSecondary.triggerEvent(true, 0);
|
mThresholdSensorSecondary.triggerEvent(true, 0);
|
||||||
assertFalse(mThresholdSensorPrimary.isPaused());
|
assertFalse(mThresholdSensorPrimary.isPaused());
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
assertFalse(mThresholdSensorSecondary.isPaused());
|
||||||
assertTrue(listener.mLastEvent.getBelow());
|
assertTrue(listener.mLastEvent.getBelow());
|
||||||
assertEquals(1, listener.mCallCount);
|
assertEquals(1, listener.mCallCount);
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
|
||||||
|
|
||||||
mProximitySensor.unregister(listener);
|
mProximitySensor.unregister(listener);
|
||||||
}
|
}
|
||||||
@@ -109,10 +108,16 @@ public class ProximitySensorDualTest extends SysuiTestCase {
|
|||||||
assertNull(listener.mLastEvent);
|
assertNull(listener.mLastEvent);
|
||||||
assertEquals(0, listener.mCallCount);
|
assertEquals(0, listener.mCallCount);
|
||||||
|
|
||||||
// Trigger second sensor.
|
// Trigger second sensor. Second sensor remains registered.
|
||||||
mThresholdSensorSecondary.triggerEvent(true, 0);
|
mThresholdSensorSecondary.triggerEvent(true, 0);
|
||||||
assertTrue(listener.mLastEvent.getBelow());
|
assertTrue(listener.mLastEvent.getBelow());
|
||||||
assertEquals(1, listener.mCallCount);
|
assertEquals(1, listener.mCallCount);
|
||||||
|
assertFalse(mThresholdSensorSecondary.isPaused());
|
||||||
|
|
||||||
|
// Triggering above should pause.
|
||||||
|
mThresholdSensorSecondary.triggerEvent(false, 0);
|
||||||
|
assertFalse(listener.mLastEvent.getBelow());
|
||||||
|
assertEquals(2, listener.mCallCount);
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
assertTrue(mThresholdSensorSecondary.isPaused());
|
||||||
|
|
||||||
// Advance time. Second sensor should resume.
|
// Advance time. Second sensor should resume.
|
||||||
@@ -120,12 +125,6 @@ public class ProximitySensorDualTest extends SysuiTestCase {
|
|||||||
mFakeExecutor.runNextReady();
|
mFakeExecutor.runNextReady();
|
||||||
assertFalse(mThresholdSensorSecondary.isPaused());
|
assertFalse(mThresholdSensorSecondary.isPaused());
|
||||||
|
|
||||||
// Triggering should pause again.
|
|
||||||
mThresholdSensorSecondary.triggerEvent(false, 0);
|
|
||||||
assertFalse(listener.mLastEvent.getBelow());
|
|
||||||
assertEquals(2, listener.mCallCount);
|
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
|
||||||
|
|
||||||
mProximitySensor.unregister(listener);
|
mProximitySensor.unregister(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +142,7 @@ public class ProximitySensorDualTest extends SysuiTestCase {
|
|||||||
mThresholdSensorPrimary.triggerEvent(true, 0);
|
mThresholdSensorPrimary.triggerEvent(true, 0);
|
||||||
mThresholdSensorSecondary.triggerEvent(true, 0);
|
mThresholdSensorSecondary.triggerEvent(true, 0);
|
||||||
assertFalse(mThresholdSensorPrimary.isPaused());
|
assertFalse(mThresholdSensorPrimary.isPaused());
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
assertFalse(mThresholdSensorSecondary.isPaused());
|
||||||
assertTrue(listener.mLastEvent.getBelow());
|
assertTrue(listener.mLastEvent.getBelow());
|
||||||
assertEquals(1, listener.mCallCount);
|
assertEquals(1, listener.mCallCount);
|
||||||
|
|
||||||
@@ -165,7 +164,7 @@ public class ProximitySensorDualTest extends SysuiTestCase {
|
|||||||
mThresholdSensorPrimary.triggerEvent(true, 0);
|
mThresholdSensorPrimary.triggerEvent(true, 0);
|
||||||
mThresholdSensorSecondary.triggerEvent(true, 0);
|
mThresholdSensorSecondary.triggerEvent(true, 0);
|
||||||
assertFalse(mThresholdSensorPrimary.isPaused());
|
assertFalse(mThresholdSensorPrimary.isPaused());
|
||||||
assertTrue(mThresholdSensorSecondary.isPaused());
|
assertFalse(mThresholdSensorSecondary.isPaused());
|
||||||
assertTrue(listener.mLastEvent.getBelow());
|
assertTrue(listener.mLastEvent.getBelow());
|
||||||
assertEquals(1, listener.mCallCount);
|
assertEquals(1, listener.mCallCount);
|
||||||
|
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ public class ThresholdSensorImplTest extends SysuiTestCase {
|
|||||||
assertTrue(listener.mBelow);
|
assertTrue(listener.mBelow);
|
||||||
assertEquals(1, listener.mCallCount);
|
assertEquals(1, listener.mCallCount);
|
||||||
|
|
||||||
sensor.sendSensorEvent(highValue + 1);
|
sensor.sendSensorEvent(highValue);
|
||||||
|
|
||||||
assertFalse(listener.mBelow);
|
assertFalse(listener.mBelow);
|
||||||
assertEquals(2, listener.mCallCount);
|
assertEquals(2, listener.mCallCount);
|
||||||
|
|||||||
Reference in New Issue
Block a user