Don't reregister AoD UDFPS gesture after trigger

Instead, the gesture will re-register on the next
AoD transition change (ie: from PULSE => AOD).

Test: atest DozeSensorsTest
Fixes: 233713099
Change-Id: I7bdd1838385d755a17eefd79e24bf4eb9f72a44c
Merged-In: I7bdd1838385d755a17eefd79e24bf4eb9f72a44c
(cherry picked from commit 5f8ab56659)
This commit is contained in:
Beverly
2022-06-13 20:53:02 +00:00
committed by Beverly Tai
parent 00d8fb5022
commit 4ddf61134d
2 changed files with 30 additions and 12 deletions

View File

@@ -183,7 +183,8 @@ public class DozeSensors {
mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION),
null /* setting */,
dozeParameters.getPulseOnSigMotion(),
DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */,
DozeLog.PULSE_REASON_SENSOR_SIGMOTION,
false /* touchCoords */,
false /* touchscreen */),
new TriggerSensor(
mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE),
@@ -193,7 +194,8 @@ public class DozeSensors {
DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
false /* touchscreen */,
false /* ignoresSetting */,
false /* requires prox */),
false /* requires prox */,
true /* immediatelyReRegister */),
new TriggerSensor(
findSensor(config.doubleTapSensorType()),
Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
@@ -211,6 +213,7 @@ public class DozeSensors {
true /* touchscreen */,
false /* ignoresSetting */,
dozeParameters.singleTapUsesProx(mDevicePosture) /* requiresProx */,
true /* immediatelyReRegister */,
mDevicePosture),
new TriggerSensor(
findSensor(config.longPressSensorType()),
@@ -221,7 +224,8 @@ public class DozeSensors {
true /* reports touch coordinates */,
true /* touchscreen */,
false /* ignoresSetting */,
dozeParameters.longPressUsesProx() /* requiresProx */),
dozeParameters.longPressUsesProx() /* requiresProx */,
true /* immediatelyReRegister */),
new TriggerSensor(
findSensor(config.udfpsLongPressSensorType()),
"doze_pulse_on_auth",
@@ -231,7 +235,8 @@ public class DozeSensors {
true /* reports touch coordinates */,
true /* touchscreen */,
false /* ignoresSetting */,
dozeParameters.longPressUsesProx()),
dozeParameters.longPressUsesProx(),
false /* immediatelyReRegister */),
new PluginSensor(
new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY),
Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE,
@@ -257,7 +262,8 @@ public class DozeSensors {
false /* requiresTouchCoordinates */,
false /* requiresTouchscreen */,
false /* ignoresSetting */,
false /* requiresProx */),
false /* requiresProx */,
true /* immediatelyReRegister */),
};
setProxListening(false); // Don't immediately start listening when we register.
mProximitySensor.register(
@@ -493,6 +499,10 @@ public class DozeSensors {
private final boolean mRequiresTouchscreen;
private final boolean mRequiresProx;
// Whether to immediately re-register this sensor after the sensor is triggered.
// If false, the sensor registration will be updated on the next AOD state transition.
private final boolean mImmediatelyReRegister;
protected boolean mRequested;
protected boolean mRegistered;
protected boolean mDisabled;
@@ -516,7 +526,8 @@ public class DozeSensors {
reportsTouchCoordinates,
requiresTouchscreen,
false /* ignoresSetting */,
false /* requiresProx */
false /* requiresProx */,
true /* immediatelyReRegister */
);
}
@@ -529,7 +540,8 @@ public class DozeSensors {
boolean reportsTouchCoordinates,
boolean requiresTouchscreen,
boolean ignoresSetting,
boolean requiresProx
boolean requiresProx,
boolean immediatelyReRegister
) {
this(
new Sensor[]{ sensor },
@@ -541,6 +553,7 @@ public class DozeSensors {
requiresTouchscreen,
ignoresSetting,
requiresProx,
immediatelyReRegister,
DevicePostureController.DEVICE_POSTURE_UNKNOWN
);
}
@@ -555,6 +568,7 @@ public class DozeSensors {
boolean requiresTouchscreen,
boolean ignoresSetting,
boolean requiresProx,
boolean immediatelyReRegister,
@DevicePostureController.DevicePostureInt int posture
) {
mSensors = sensors;
@@ -567,6 +581,7 @@ public class DozeSensors {
mIgnoresSetting = ignoresSetting;
mRequiresProx = requiresProx;
mPosture = posture;
mImmediatelyReRegister = immediatelyReRegister;
}
/**
@@ -702,8 +717,8 @@ public class DozeSensors {
screenY = event.values[1];
}
mSensorCallback.onSensorPulse(mPulseReason, screenX, screenY, event.values);
if (!mRegistered) {
updateListening(); // reregister, this sensor only fires once
if (!mRegistered && mImmediatelyReRegister) {
updateListening();
}
}));
}

View File

@@ -461,7 +461,8 @@ public class DozeSensorsTest extends SysuiTestCase {
/* reportsTouchCoordinate*/ false,
/* requiresTouchscreen */ false,
/* ignoresSetting */ false,
requiresTouchScreen);
requiresTouchScreen,
/* immediatelyReRegister */ true);
}
public TriggerSensor createDozeSensor(
@@ -477,7 +478,8 @@ public class DozeSensorsTest extends SysuiTestCase {
/* reportsTouchCoordinate*/ false,
/* requiresTouchscreen */ false,
/* ignoresSetting */ false,
/* requiresTouchScreen */false);
/* requiresTouchScreen */ false,
/* immediatelyReRegister*/ true);
}
/**
@@ -492,7 +494,8 @@ public class DozeSensorsTest extends SysuiTestCase {
/* reportsTouchCoordinate*/ false,
/* requiresTouchscreen */ false,
/* ignoresSetting */ true,
/* requiresProx */false,
/* requiresProx */ false,
/* immediatelyReRegister */ true,
posture);
}