Fix Hard to detect multi-finger multi-tap

The double-tap/touch slope is from system's double-tap detector.
This threshold is too narrow for multi-finger multi-tap. It ends up
canceling the detection when the movement exceed the slope.

We adjust the slopes by multiplying the target finger count.
The maxium slope in 4 fingers is around 4.48 mm is smaller than
the swipe threshold (1 cm)
Bug: 158725482
Test: atest GestureManifoldTest
atest TouchExplorerTest
atest AccessibilityGestureDetectorTest

Change-Id: If0927d15d61a9682da67721d0bf0bbbc1045078b
This commit is contained in:
ryanlwlin
2020-06-20 13:52:44 +08:00
parent 7144459282
commit 1f913ea0dc

View File

@@ -67,8 +67,8 @@ class MultiFingerMultiTap extends GestureMatcher {
Preconditions.checkArgumentPositive(taps, "Tap count must greater than 0.");
mTargetTapCount = taps;
mTargetFingerCount = fingers;
mDoubleTapSlop = ViewConfiguration.get(context).getScaledDoubleTapSlop();
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
mDoubleTapSlop = ViewConfiguration.get(context).getScaledDoubleTapSlop() * fingers;
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop() * fingers;
mBases = new PointF[mTargetFingerCount];
for (int i = 0; i < mBases.length; i++) {