diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java index 0798590b68f50..1ac59925a70a6 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java @@ -27,6 +27,7 @@ import android.os.PowerManager; import android.os.UserHandle; import android.provider.Settings; import android.view.MotionEvent; +import android.view.accessibility.AccessibilityManager; import com.android.systemui.analytics.DataCollector; import com.android.systemui.statusbar.StatusBarState; @@ -60,6 +61,7 @@ public class FalsingManager implements SensorEventListener { private final SensorManager mSensorManager; private final DataCollector mDataCollector; private final HumanInteractionClassifier mHumanInteractionClassifier; + private final AccessibilityManager mAccessibilityManager; private static FalsingManager sInstance = null; @@ -78,7 +80,8 @@ public class FalsingManager implements SensorEventListener { private FalsingManager(Context context) { mContext = context; - mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); + mSensorManager = mContext.getSystemService(SensorManager.class); + mAccessibilityManager = context.getSystemService(AccessibilityManager.class); mDataCollector = DataCollector.getInstance(mContext); mHumanInteractionClassifier = HumanInteractionClassifier.getInstance(mContext); mScreenOn = context.getSystemService(PowerManager.class).isInteractive(); @@ -177,6 +180,11 @@ public class FalsingManager implements SensorEventListener { .toString()); } } + if (mAccessibilityManager.isTouchExplorationEnabled()) { + // Touch exploration triggers false positives in the classifier and + // already sufficiently prevents false unlocks. + return false; + } return mHumanInteractionClassifier.isFalseTouch(); }