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