这里直接给出修改:

  • 源码位置: 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 锁屏解锁之向上滑动显示解锁界面分析

更多推荐