android 8.0 3D锁屏,Android 8.0 锁屏滑动无法解锁
問題:有一個電阻屏的手機,屏幕小,并且滑動不流暢導致無法解鎖
解鎖有兩個界面
1. Notification Keyguard 顯示通知鎖屏
2.bouncer輸入密碼鎖屏
一般情況下解鎖根據滑動Y距離的長度和速度,再根據一些因數處理,通過閥值完成解鎖。
嘗試修改
/frameworks/base/packages/SystemUI/res/values/Dimens.xml80dp
unlock_move_distance
hint_move_distance
發現并沒有很好的效果,無奈只能跟蹤代碼。
PannelView.java
endMotionEvent() 有 boolean expand的判斷,這個就是控制是否expand邏輯,
解鎖false, 無法解鎖true.
繼續跟蹤:flingExpands() -> isFalseTouch(x, y) -> FalsingManager.isFalseTouch() -> ?HumanInteractionClassifier.isFalseTouch()
float evaluation = mHistoryEvaluator.getEvaluation();
boolean result = evaluation >= 5.0f;
這里有個閥值判斷,大于就是誤碰操作,小于可以解鎖, 取一個合適值,問題就可以解決了。
追蹤原因, mHistoryEvaluator.getEvaluationprivate final ArrayList mStrokes = new ArrayList<>();
private final ArrayList mGestureWeights = new ArrayList<>();
/**
* Calculates the weighted average of strokes and adds to it the weighted average of gestures
*/
public float getEvaluation() {
return weightedAverage(mStrokes) + weightedAverage(mGestureWeights);
}
這是一個比重值的計算,數組mStrokes與mGestureWeights會在ontouch事件中加入相關比重值,滑動的時候再計算值判斷是否為誤觸,相關算法有興趣的可以去看下?HumanInteractionClassifier與?HistoryEvaluator
總結
以上是生活随笔為你收集整理的android 8.0 3D锁屏,Android 8.0 锁屏滑动无法解锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android studio 7200u
- 下一篇: android+notepad教程,An