Merge "Disable falsing manager when face-authed." into qt-r1-dev am: 9249d828a1
am: 5606325ee3
Change-Id: I4990045977816f0f8e7ad29d95a647a5d9ca3aa0
This commit is contained in:
@@ -26,6 +26,7 @@ import android.provider.DeviceConfig;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
|
||||
import com.android.systemui.classifier.brightline.FalsingDataProvider;
|
||||
@@ -102,7 +103,8 @@ public class FalsingManagerProxy implements FalsingManager {
|
||||
} else {
|
||||
mInternalFalsingManager = new BrightLineFalsingManager(
|
||||
new FalsingDataProvider(context.getResources().getDisplayMetrics()),
|
||||
Dependency.get(AsyncSensorManager.class)
|
||||
Dependency.get(AsyncSensorManager.class),
|
||||
KeyguardUpdateMonitor.getInstance(context)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,11 +23,14 @@ import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
import android.hardware.SensorManager;
|
||||
import android.hardware.biometrics.BiometricSourceType;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.classifier.Classifier;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
|
||||
@@ -47,11 +50,13 @@ public class BrightLineFalsingManager implements FalsingManager {
|
||||
|
||||
private final SensorManager mSensorManager;
|
||||
private final FalsingDataProvider mDataProvider;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private boolean mSessionStarted;
|
||||
private MetricsLogger mMetricsLogger;
|
||||
private int mIsFalseTouchCalls;
|
||||
private boolean mShowingAod;
|
||||
private boolean mScreenOn;
|
||||
private boolean mJustUnlockedWithFace;
|
||||
|
||||
private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor();
|
||||
|
||||
@@ -68,10 +73,27 @@ public class BrightLineFalsingManager implements FalsingManager {
|
||||
}
|
||||
};
|
||||
|
||||
public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider,
|
||||
SensorManager sensorManager) {
|
||||
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onBiometricAuthenticated(int userId,
|
||||
BiometricSourceType biometricSourceType) {
|
||||
if (userId == KeyguardUpdateMonitor.getCurrentUser()
|
||||
&& biometricSourceType == BiometricSourceType.FACE) {
|
||||
mJustUnlockedWithFace = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public BrightLineFalsingManager(
|
||||
FalsingDataProvider falsingDataProvider,
|
||||
SensorManager sensorManager,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor) {
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mDataProvider = falsingDataProvider;
|
||||
mSensorManager = sensorManager;
|
||||
mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback);
|
||||
|
||||
mMetricsLogger = new MetricsLogger();
|
||||
mClassifiers = new ArrayList<>();
|
||||
DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider);
|
||||
@@ -110,6 +132,7 @@ public class BrightLineFalsingManager implements FalsingManager {
|
||||
if (!mSessionStarted && !mShowingAod && mScreenOn) {
|
||||
logDebug("Starting Session");
|
||||
mSessionStarted = true;
|
||||
mJustUnlockedWithFace = false;
|
||||
registerSensors();
|
||||
mClassifiers.forEach(FalsingClassifier::onSessionStarted);
|
||||
}
|
||||
@@ -141,7 +164,7 @@ public class BrightLineFalsingManager implements FalsingManager {
|
||||
|
||||
@Override
|
||||
public boolean isFalseTouch() {
|
||||
boolean r = mClassifiers.stream().anyMatch(falsingClassifier -> {
|
||||
boolean r = !mJustUnlockedWithFace && mClassifiers.stream().anyMatch(falsingClassifier -> {
|
||||
boolean result = falsingClassifier.isFalseTouch();
|
||||
if (result) {
|
||||
logInfo(falsingClassifier.getClass().getName() + ": true");
|
||||
@@ -335,6 +358,7 @@ public class BrightLineFalsingManager implements FalsingManager {
|
||||
@Override
|
||||
public void cleanup() {
|
||||
unregisterSensors();
|
||||
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback);
|
||||
}
|
||||
|
||||
static void logDebug(String msg) {
|
||||
|
||||
Reference in New Issue
Block a user