Merge "Disable falsing manager when face-authed." into qt-r1-dev

This commit is contained in:
Dave Mankoff
2019-08-12 15:17:39 +00:00
committed by Android (Google) Code Review
2 changed files with 30 additions and 4 deletions

View File

@@ -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)
);
}

View File

@@ -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) {