Android12 -横屏解锁优化

代码位置

 ​alps/vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/dimens.xml

具体代码

solution 1:

     <dimen name="speed_bump_height">16dp</dimen>
 
     <!-- Lockscreen unlocking falsing threshold. -->
-    <dimen name="unlock_falsing_threshold">80dp</dimen>
+    <dimen name="unlock_falsing_threshold">25dp</dimen>
 
     <!-- Lockscreen falsing threshold for quick settings. -->
     <dimen name="qs_falsing_threshold">60dp</dimen>


 
     <!-- Distance the user needs to drag vertically such that a swipe is accepted to unlock the
          device. -->
-    <dimen name="unlock_move_distance">75dp</dimen>
+    <dimen name="unlock_move_distance">20dp</dimen>
 
     <!-- Move distance for the unlock hint animation on the lockscreen -->
-    <dimen name="hint_move_distance">75dp</dimen>
+    <dimen name="hint_move_distance">20dp</dimen>
 
     <!-- The overshoot amount when the panel flings open -->
     <dimen name="panel_overshoot_amount">16dp</dimen>

缩小滑动距离,改动可能不明显。使用solution 2

solution 2:

代码位置

alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java

alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java

alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ZigZagClassifier.java

具体代码

a/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java
@@ -159,7 +159,8 @@ class DistanceClassifier extends FalsingClassifier {
                 || interactionType == Classifier.QS_SWIPE) {
             return Result.passed(0);
         }
-
+                       //lyz 2023.03.17 Unlock Optimization
+                                               if (true) return Result.passed(0.5);
         return !getPassedFlingThreshold() ? falsed(0.5, getReason()) : Result.passed(0.5);
     }

a/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ZigZagClassifier.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ZigZagClassifier.java
@@ -163,6 +163,8 @@ class ZigZagClassifier extends FalsingClassifier {
 
         logDebug("Straightness Deviance: (" + devianceX + "," + devianceY + ") vs "
                 + "(" + maxXDeviance + "," + maxYDeviance + ")");
+                //lyz 2023.03.17 Unlock Optimization
+                if (true) return Result.passed(0.5);
         return devianceX > maxXDeviance || devianceY > maxYDeviance
             ? falsed(0.5, getReason()) : Result.passed(0.5);
     }

 关闭DistanceClassifier和ZigZagClassifier,可能是因为机器的屏幕报点问题导致。

solution 3:

代码位置

alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java

具体代码

a/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java
@@ -32,6 +32,7 @@ import java.util.Locale;
 
 import javax.inject.Inject;
 
+import android.util.Log;
 
 /**
  * False touch if proximity sensor is covered for more than a certain percentage of the gesture.
@@ -51,6 +52,8 @@ class ProximityClassifier extends FalsingClassifier {
     private long mNearDurationNs;
     private float mPercentNear;
 
+private static final String TAG = "ProximityClassifier";
+
     @Inject
     ProximityClassifier(DistanceClassifier distanceClassifier,
             FalsingDataProvider dataProvider, DeviceConfigProxy deviceConfigProxy) {
@@ -78,7 +81,6 @@ class ProximityClassifier extends FalsingClassifier {
     @Override
     public void onTouchEvent(MotionEvent motionEvent) {
         int action = motionEvent.getActionMasked();
-
         if (action == MotionEvent.ACTION_DOWN) {
             mGestureStartTimeNs = motionEvent.getEventTimeNano();
             if (mPrevNearTimeNs > 0) {
@@ -108,21 +110,22 @@ class ProximityClassifier extends FalsingClassifier {
     @Override
     public void onProximityEvent(
             FalsingManager.ProximityEvent proximityEvent) {
-        boolean covered = proximityEvent.getCovered();
+               //lyz 2023.03.17 Unlock Optimization
+       /* boolean covered = proximityEvent.getCovered();
         long timestampNs = proximityEvent.getTimestampNs();
         logDebug("Sensor is: " + covered + " at time " + timestampNs);
-        update(covered, timestampNs);
+        update(covered, timestampNs);*/ 
     }
 
     @Override
     Result calculateFalsingResult(
             @Classifier.InteractionType int interactionType,
             double historyBelief, double historyConfidence) {
+                if (true) return Result.passed(0.5);
         if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER
                 || interactionType == QS_COLLAPSE || interactionType == QS_SWIPE) {
             return Result.passed(0);
         }
-
         if (mPercentNear > mPercentCoveredThreshold) {
             Result longSwipeResult = mDistanceClassifier.isLongSwipe();
             return longSwipeResult.isFalse()
@@ -130,7 +133,6 @@ class ProximityClassifier extends FalsingClassifier {
                             0.5, getReason(longSwipeResult, mPercentNear, mPercentCoveredThreshold))
                     : Result.passed(0.5);
         }
-
         return Result.passed(0.5);
     }

终极解决办法。 

问题分析

从安卓10开始,谷歌开始默认启用BrightLineFalsingManager,支持切换成旧版FalsingManagerImpl,但是安卓12不支持切换了。
BrightLineFalsingManager功能google描述为:旨在说明触摸被拒绝的原因。
google提交说明:为新的falsing管理器和分类器添加基类。这不会添加功能更改。它只是为新的FalsingManager添加了框架。
之后google添加可多个判断规则:
1.PointerCountClassifier:如果检测到多个指针,则在锁定屏幕上为False。
2.TypeClassifier:这与现有的伪分类器相匹配,以确保刷卡的总体方向与预期的动作相匹配(例如,删除通知应该是并排的)。
3.DiagonalClassifier:将拒绝过于接近45度的划动。
4.DistanceClassifier:确保刷卡+动量大于最小距离。
5.ProximityClassifier:如果接近传感器被覆盖超过一定百分比,则错误触摸。(这个分级器本质上是一个快速设置的禁止操作,因为我们假设从顶部滑动时传感器可能被覆盖)。
6.ZigZagClassifier:拒绝了之字形滑动。解锁应该基本上是直的。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值