From ba854db8c5855f25f68b685cdc8d265d597883a8 Mon Sep 17 00:00:00 2001 From: Ameer Armaly Date: Wed, 23 Sep 2020 11:50:12 -0700 Subject: [PATCH] Add gesture ids 43-45. GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD = 43 GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD = 44 GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD = 45 Bug: 169189474 Test: atest GestureManifoldTest TouchExplorerTest AccessibilityGestureDetectorTest FrameworksServicesTests:TouchExplorerTest Change-Id: Icaed2bbfcea35d42bf3fdf0cee9bfdf8ac819438 --- api/current.txt | 3 +++ .../AccessibilityGestureEvent.java | 12 ++++++++++++ .../accessibilityservice/AccessibilityService.java | 9 +++++++++ non-updatable-api/current.txt | 3 +++ .../accessibility/gestures/GestureManifold.java | 14 ++++++++++++++ .../gestures/MultiFingerMultiTap.java | 1 + 6 files changed, 42 insertions(+) diff --git a/api/current.txt b/api/current.txt index 09a65c398caaf..6239552ac8657 100644 --- a/api/current.txt +++ b/api/current.txt @@ -2889,6 +2889,7 @@ package android.accessibilityservice { field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14 field public static final int GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD = 40; // 0x28 field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13 + field public static final int GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD = 43; // 0x2b field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c @@ -2897,11 +2898,13 @@ package android.accessibilityservice { field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17 field public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; // 0x29 field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16 + field public static final int GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD = 44; // 0x2c field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20 field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18 + field public static final int GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD = 45; // 0x2d field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26 field public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; // 0x2a field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25 diff --git a/core/java/android/accessibilityservice/AccessibilityGestureEvent.java b/core/java/android/accessibilityservice/AccessibilityGestureEvent.java index 25729abf9e059..e3139eb798f76 100644 --- a/core/java/android/accessibilityservice/AccessibilityGestureEvent.java +++ b/core/java/android/accessibilityservice/AccessibilityGestureEvent.java @@ -20,6 +20,7 @@ package android.accessibilityservice; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_DOWN; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_LEFT; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_RIGHT; @@ -28,11 +29,13 @@ import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_DOWN; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_LEFT; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_RIGHT; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_UP; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SINGLE_TAP; @@ -85,13 +88,16 @@ public final class AccessibilityGestureEvent implements Parcelable { /** @hide */ @IntDef(prefix = { "GESTURE_" }, value = { GESTURE_2_FINGER_SINGLE_TAP, + GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD, GESTURE_2_FINGER_DOUBLE_TAP, GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD, GESTURE_2_FINGER_TRIPLE_TAP, GESTURE_3_FINGER_SINGLE_TAP, + GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD, GESTURE_3_FINGER_DOUBLE_TAP, GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD, GESTURE_3_FINGER_TRIPLE_TAP, + GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD, GESTURE_DOUBLE_TAP, GESTURE_DOUBLE_TAP_AND_HOLD, GESTURE_SWIPE_UP, @@ -180,15 +186,21 @@ public final class AccessibilityGestureEvent implements Parcelable { private static String eventTypeToString(int eventType) { switch (eventType) { case GESTURE_2_FINGER_SINGLE_TAP: return "GESTURE_2_FINGER_SINGLE_TAP"; + case GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD: + return "GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD"; case GESTURE_2_FINGER_DOUBLE_TAP: return "GESTURE_2_FINGER_DOUBLE_TAP"; case GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD: return "GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD"; case GESTURE_2_FINGER_TRIPLE_TAP: return "GESTURE_2_FINGER_TRIPLE_TAP"; case GESTURE_3_FINGER_SINGLE_TAP: return "GESTURE_3_FINGER_SINGLE_TAP"; + case GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD: + return "GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD"; case GESTURE_3_FINGER_DOUBLE_TAP: return "GESTURE_3_FINGER_DOUBLE_TAP"; case GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD: return "GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD"; case GESTURE_3_FINGER_TRIPLE_TAP: return "GESTURE_3_FINGER_TRIPLE_TAP"; + case GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD: + return "GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD"; case GESTURE_4_FINGER_SINGLE_TAP: return "GESTURE_4_FINGER_SINGLE_TAP"; case GESTURE_4_FINGER_DOUBLE_TAP: return "GESTURE_4_FINGER_DOUBLE_TAP"; case GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD: diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java index b5b0ce3a65f3a..7c6d4484ee12c 100644 --- a/core/java/android/accessibilityservice/AccessibilityService.java +++ b/core/java/android/accessibilityservice/AccessibilityService.java @@ -421,6 +421,15 @@ public abstract class AccessibilityService extends Service { /** The user has performed a three-finger double tap and hold gesture on the touch screen. */ public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; + /** The user has performed a two-finger single-tap and hold gesture on the touch screen. */ + public static final int GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD = 43; + + /** The user has performed a three-finger single-tap and hold gesture on the touch screen. */ + public static final int GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD = 44; + + /** The user has performed a three-finger triple-tap and hold gesture on the touch screen. */ + public static final int GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD = 45; + /** The user has performed a two-finger double tap and hold gesture on the touch screen. */ public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt index 3cc1e42e64989..055ed2f87d8dc 100644 --- a/non-updatable-api/current.txt +++ b/non-updatable-api/current.txt @@ -2889,6 +2889,7 @@ package android.accessibilityservice { field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14 field public static final int GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD = 40; // 0x28 field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13 + field public static final int GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD = 43; // 0x2b field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c @@ -2897,11 +2898,13 @@ package android.accessibilityservice { field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17 field public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; // 0x29 field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16 + field public static final int GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD = 44; // 0x2c field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20 field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18 + field public static final int GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD = 45; // 0x2d field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26 field public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; // 0x2a field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25 diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java index a860db389d1e6..14af8c63073e5 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java @@ -19,6 +19,7 @@ package com.android.server.accessibility.gestures; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_DOWN; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_LEFT; import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_RIGHT; @@ -27,11 +28,13 @@ import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_DOWN; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_LEFT; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_RIGHT; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_UP; import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP; +import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD; import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SINGLE_TAP; @@ -139,6 +142,9 @@ class GestureManifold implements GestureMatcher.StateChangeListener { // Two-finger taps. mMultiFingerGestures.add( new MultiFingerMultiTap(mContext, 2, 1, GESTURE_2_FINGER_SINGLE_TAP, this)); + mMultiFingerGestures.add( + new MultiFingerMultiTapAndHold( + mContext, 2, 1, GESTURE_2_FINGER_SINGLE_TAP_AND_HOLD, this)); mMultiFingerGestures.add( new MultiFingerMultiTap(mContext, 2, 2, GESTURE_2_FINGER_DOUBLE_TAP, this)); mMultiFingerGestures.add( @@ -151,11 +157,19 @@ class GestureManifold implements GestureMatcher.StateChangeListener { new MultiFingerMultiTap(mContext, 3, 1, GESTURE_3_FINGER_SINGLE_TAP, this)); mMultiFingerGestures.add( new MultiFingerMultiTap(mContext, 3, 2, GESTURE_3_FINGER_DOUBLE_TAP, this)); + mMultiFingerGestures.add( + new MultiFingerMultiTapAndHold( + mContext, 3, 1, GESTURE_3_FINGER_SINGLE_TAP_AND_HOLD, this)); mMultiFingerGestures.add( new MultiFingerMultiTapAndHold( mContext, 3, 2, GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD, this)); mMultiFingerGestures.add( new MultiFingerMultiTap(mContext, 3, 3, GESTURE_3_FINGER_TRIPLE_TAP, this)); + mMultiFingerGestures.add( + new MultiFingerMultiTapAndHold( + mContext, 3, 3, GESTURE_3_FINGER_TRIPLE_TAP_AND_HOLD, this)); + mMultiFingerGestures.add( + new MultiFingerMultiTap(mContext, 3, 3, GESTURE_3_FINGER_TRIPLE_TAP, this)); // Four-finger taps. mMultiFingerGestures.add( new MultiFingerMultiTap(mContext, 4, 1, GESTURE_4_FINGER_SINGLE_TAP, this)); diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java index e15c4951d2a29..46b46288cf840 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java @@ -162,6 +162,7 @@ class MultiFingerMultiTap extends GestureMatcher { // Accept down only before target number of fingers are down // or the finger count is not more than target. if ((currentFingerCount > mTargetFingerCount) || mIsTargetFingerCountReached) { + mIsTargetFingerCountReached = false; cancelGesture(event, rawEvent, policyFlags); return; }