流程:
KeyguardBouncer.java -> PanelViewController.java -> BrightLineFalsingManager.java
classifier/BrightLineFalsingManager.java是各种解锁条件判断的总类
isFalseTouch()中会判断所有的可以解锁的条件是否满足,如果返回6个true,则可以进行解锁
新的功能google描述为:旨在说明触摸被拒绝的原因。
google提交说明:为新的falsing管理器和分类器添加基类。这不会添加功能更改。它只是为新的FalsingManager添加了框架。
之后google添加可多个判断规则:
(1)PointerCountClassifier: 如果检测到多个指针,则在锁定屏幕上为False。
(2)TypeClassifier:这与现有的伪分类器相匹配,以确保刷卡的总体方向与预期的动作相匹配(例如,删除通知应该是并排的)。
(3)DiagonalClassifier:将拒绝过于接近45度的划动。
(4)DistanceClassifier:确保刷卡+动量大于最小距离。
(5)ProximityClassifier:如果接近传感器被覆盖超过一定百分比,则错误触摸。(这个分级器本质上是一个快速设置的禁止操作,因为我们假设从顶部滑动时传感器可能被覆盖)。
(5)ZigZagClassifier:拒绝了之字形滑动。解锁应该基本上是直的。
在DistanceClassifier.java中的getPassedFlingThreshold()方法是判断滑动的距离条件