diff options
author | Dave Mankoff <mankoff@google.com> | 2021-01-25 14:34:43 -0500 |
---|---|---|
committer | Dave Mankoff <mankoff@google.com> | 2021-03-10 16:42:23 -0500 |
commit | 8d0f3a0c3c735d9ad9fb7173ccce847f1dc89e1f (patch) | |
tree | 66d44833f3ce8052b56f0cfd02178b9b66a463f1 /packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java | |
parent | e673774033be0dea61ceb35c373044dbc6eeebed (diff) |
Incorporate Bayes into Falsing.
This uses the HistoryTracker on pin-based input to determine if a
tap outside of an intended region is a false touch, retracting the
pin input if we believe pocket dialing is occuring.
To do this, the cl properly integrates the HistoryTracker into
falsing, at least for single taps.
Most importantly, HistoryTracker#falsingBelief now return 0.5 when
it is unsure if a tap is false or not, and tends towards 0 when it
believes it's valid and 1 when it believes it's false.
HistoryTracker#falsingConfidence remains unchanged.
Test: atest SystemUITests && manual
Bug: 172655679
Change-Id: Ie771b1bf8ac564af7ffb68e190772fff5c562e89
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java')
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index 957882dc9c6b..8cbaae5661ae 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -27,6 +27,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.classifier.SingleTapClassifier; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.util.ViewController; @@ -158,6 +159,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> private LiftToActivateListener mLiftToActivateListener; private TelephonyManager mTelephonyManager; private final FalsingCollector mFalsingCollector; + private final SingleTapClassifier mSingleTapClassifier; private final boolean mIsNewLayoutEnabled; @Inject @@ -169,6 +171,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> @Main Resources resources, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, + SingleTapClassifier singleTapClassifier, FeatureFlags featureFlags) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; @@ -180,6 +183,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> mLiftToActivateListener = liftToActivateListener; mTelephonyManager = telephonyManager; mFalsingCollector = falsingCollector; + mSingleTapClassifier = singleTapClassifier; mIsNewLayoutEnabled = featureFlags.isKeyguardLayoutEnabled(); } @@ -194,24 +198,26 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> return new KeyguardPasswordViewController((KeyguardPasswordView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mInputMethodManager, mMainExecutor, mResources); + mInputMethodManager, mMainExecutor, mResources, mFalsingCollector, + mSingleTapClassifier); } else if (keyguardInputView instanceof KeyguardPINView) { return new KeyguardPinViewController((KeyguardPINView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mLiftToActivateListener, mFalsingCollector, mIsNewLayoutEnabled); + mLiftToActivateListener, mFalsingCollector, mSingleTapClassifier, + mIsNewLayoutEnabled); } else if (keyguardInputView instanceof KeyguardSimPinView) { return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mLiftToActivateListener, mTelephonyManager, - mFalsingCollector, mIsNewLayoutEnabled); + mLiftToActivateListener, mTelephonyManager, mFalsingCollector, + mSingleTapClassifier, mIsNewLayoutEnabled); } else if (keyguardInputView instanceof KeyguardSimPukView) { return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mLiftToActivateListener, mTelephonyManager, - mFalsingCollector, mIsNewLayoutEnabled); + mLiftToActivateListener, mTelephonyManager, mFalsingCollector, + mSingleTapClassifier, mIsNewLayoutEnabled); } throw new RuntimeException("Unable to find controller for " + keyguardInputView); |