diff options
| author | 2019-12-19 20:25:50 +0000 | |
|---|---|---|
| committer | 2019-12-19 20:25:50 +0000 | |
| commit | 69b475463f7b524e0ee3ed8ed0aecb8da18f7aed (patch) | |
| tree | c2f7c3abd560dedf519299a91f7a8610cd311b5d | |
| parent | ef0bac1d92a79fb6de94d8e2b035ff4801954d21 (diff) | |
| parent | c6222fabb3277ff8c5cbe872d25cd89e9cc1623d (diff) | |
Merge "Fix issues with swiping on some devices."
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java index b246c67944c7..a285c10cc6ff 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java @@ -26,6 +26,7 @@ import android.util.DisplayMetrics; import android.util.Slog; import android.util.TypedValue; import android.view.MotionEvent; +import android.view.ViewConfiguration; import java.util.ArrayList; @@ -85,6 +86,10 @@ class Swipe extends GestureMatcher { private static final float MIN_CM_BETWEEN_SAMPLES = 0.25f; private final float mMinPixelsBetweenSamplesX; private final float mMinPixelsBetweenSamplesY; + // The minmimum distance the finger must travel before we evaluate the initial direction of the + // swipe. + // Anything less is still considered a touch. + private int mTouchSlop; // Constants for separating gesture segments private static final float ANGLE_THRESHOLD = 0.0f; @@ -122,6 +127,7 @@ class Swipe extends GestureMatcher { final float pixelsPerCmY = displayMetrics.ydpi / 2.54f; mMinPixelsBetweenSamplesX = MIN_CM_BETWEEN_SAMPLES * pixelsPerCmX; mMinPixelsBetweenSamplesY = MIN_CM_BETWEEN_SAMPLES * pixelsPerCmY; + mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); clear(); } @@ -165,7 +171,10 @@ class Swipe extends GestureMatcher { + Float.toString(mGestureDetectionThreshold)); } if (getState() == STATE_CLEAR) { - if (mStrokeBuffer.size() == 0) { + if (moveDelta < mTouchSlop) { + // This still counts as a touch not a swipe. + return; + } else if (mStrokeBuffer.size() == 0) { // First, make sure the pointer is going in the right direction. cancelAfterDelay(event, rawEvent, policyFlags); int direction = toDirection(x - mBaseX, y - mBaseY); |