这里直接给出修改:
- 源码位置: SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
protected boolean flingExpands(float vel, float vectorVel, float x, float y) {
if (isFalseTouch(x, y)) {
return true;
}
if (Math.abs(vectorVel) < mFlingAnimationUtils.getMinVelocityPxPerSecond()) {
- return getExpandedFraction() > 0.5f;
+ return getExpandedFraction() > 0.7f;
} else {
return vel > 0;
}
}
- 源码位置 :SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java
public boolean isFalseTouch() {
if (mEnableClassifier) {
float evaluation = mHistoryEvaluator.getEvaluation();
- boolean result = evaluation >= 5.0f;
+ boolean result = evaluation >= 8.0f;
if (FalsingLog.ENABLED) {
FalsingLog.i("isFalseTouch", new StringBuilder()
.append("eval=").append(evaluation).append(" result=")
.append(result ? 1 : 0).toString());
}
return result;
}
return false;
}
上面两处修改都会产生影响,自己打印log选择合适的值。
- 分析:抬起手指,产生touch up事件,会走endMotionEvent(),其中有 boolean expand的判断,这个就是控制是否expand逻辑,解锁false, 无法解锁true.
flingExpands() -> isFalseTouch(x, y) -> mFalsingManager.isFalseTouch()
-> HumanInteractionClassifier.isFalseTouch()
Android8.1 SystemUI Keyguard之滑动解锁流程
Android 7.0 锁屏解锁之向上滑动显示解锁界面分析