blob: d82b151e9ce917647e39673519759f5a6bbe28c3 [file] [log] [blame]
RyanlwLina0daddd2019-06-19 11:39:01 +08001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.accessibilityservice;
18
19
Ameer Armaly51106a32019-09-17 14:40:36 -070020import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP;
21import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP_AND_HOLD;
RyanlwLina0daddd2019-06-19 11:39:01 +080022import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN;
23import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN_AND_LEFT;
24import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN_AND_RIGHT;
25import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN_AND_UP;
26import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_LEFT;
27import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_LEFT_AND_DOWN;
28import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_LEFT_AND_RIGHT;
29import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_LEFT_AND_UP;
30import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_RIGHT;
31import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_RIGHT_AND_DOWN;
32import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_RIGHT_AND_LEFT;
33import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_RIGHT_AND_UP;
34import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_UP;
35import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_UP_AND_DOWN;
36import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_UP_AND_LEFT;
37import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_UP_AND_RIGHT;
38
39import android.annotation.IntDef;
40import android.annotation.NonNull;
41import android.annotation.TestApi;
42import android.os.Parcel;
43import android.os.Parcelable;
44
45import java.lang.annotation.Retention;
46import java.lang.annotation.RetentionPolicy;
47
48/**
RyanlwLin0d17f042019-09-02 21:22:09 +080049 * This class describes the gesture event including gesture id and which display it happens
RyanlwLina0daddd2019-06-19 11:39:01 +080050 * on.
51 * <p>
52 * <strong>Note:</strong> Accessibility services setting the
53 * {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}
54 * flag can receive gestures.
55 *
RyanlwLin0d17f042019-09-02 21:22:09 +080056 * @see AccessibilityService#onGesture(AccessibilityGestureEvent)
RyanlwLina0daddd2019-06-19 11:39:01 +080057 */
58
RyanlwLin0d17f042019-09-02 21:22:09 +080059public final class AccessibilityGestureEvent implements Parcelable {
RyanlwLina0daddd2019-06-19 11:39:01 +080060
61 /** @hide */
62 @IntDef(prefix = { "GESTURE_" }, value = {
Ameer Armaly51106a32019-09-17 14:40:36 -070063 GESTURE_DOUBLE_TAP,
64 GESTURE_DOUBLE_TAP_AND_HOLD,
RyanlwLina0daddd2019-06-19 11:39:01 +080065 GESTURE_SWIPE_UP,
66 GESTURE_SWIPE_UP_AND_LEFT,
67 GESTURE_SWIPE_UP_AND_DOWN,
68 GESTURE_SWIPE_UP_AND_RIGHT,
69 GESTURE_SWIPE_DOWN,
70 GESTURE_SWIPE_DOWN_AND_LEFT,
71 GESTURE_SWIPE_DOWN_AND_UP,
72 GESTURE_SWIPE_DOWN_AND_RIGHT,
73 GESTURE_SWIPE_LEFT,
74 GESTURE_SWIPE_LEFT_AND_UP,
75 GESTURE_SWIPE_LEFT_AND_RIGHT,
76 GESTURE_SWIPE_LEFT_AND_DOWN,
77 GESTURE_SWIPE_RIGHT,
78 GESTURE_SWIPE_RIGHT_AND_UP,
79 GESTURE_SWIPE_RIGHT_AND_LEFT,
80 GESTURE_SWIPE_RIGHT_AND_DOWN
81 })
82 @Retention(RetentionPolicy.SOURCE)
ryanlwlindafef882019-11-11 20:21:31 +080083 public @interface GestureId {}
RyanlwLina0daddd2019-06-19 11:39:01 +080084
ryanlwlindafef882019-11-11 20:21:31 +080085 @GestureId
RyanlwLina0daddd2019-06-19 11:39:01 +080086 private final int mGestureId;
87 private final int mDisplayId;
88
89 /** @hide */
90 @TestApi
RyanlwLin0d17f042019-09-02 21:22:09 +080091 public AccessibilityGestureEvent(int gestureId, int displayId) {
RyanlwLina0daddd2019-06-19 11:39:01 +080092 mGestureId = gestureId;
93 mDisplayId = displayId;
94 }
95
RyanlwLin0d17f042019-09-02 21:22:09 +080096 private AccessibilityGestureEvent(@NonNull Parcel parcel) {
RyanlwLina0daddd2019-06-19 11:39:01 +080097 mGestureId = parcel.readInt();
98 mDisplayId = parcel.readInt();
99 }
100
101 /**
102 * Returns the display id of the received-gesture display, for use with
103 * {@link android.hardware.display.DisplayManager#getDisplay(int)}.
104 *
105 * @return the display id.
106 */
107 public int getDisplayId() {
108 return mDisplayId;
109 }
110
111 /**
112 * Returns performed gesture id.
113 *
114 * @return the performed gesture id.
115 *
116 */
ryanlwlindafef882019-11-11 20:21:31 +0800117 @GestureId public int getGestureId() {
RyanlwLina0daddd2019-06-19 11:39:01 +0800118 return mGestureId;
119 }
120
Aurimas Liutikas4d1699d2019-08-28 13:01:05 -0700121 @NonNull
RyanlwLina0daddd2019-06-19 11:39:01 +0800122 @Override
123 public String toString() {
RyanlwLin0d17f042019-09-02 21:22:09 +0800124 StringBuilder stringBuilder = new StringBuilder("AccessibilityGestureEvent[");
RyanlwLina0daddd2019-06-19 11:39:01 +0800125 stringBuilder.append("gestureId: ").append(mGestureId);
126 stringBuilder.append(", ");
127 stringBuilder.append("displayId: ").append(mDisplayId);
128 stringBuilder.append(']');
129 return stringBuilder.toString();
130 }
131
132 /**
133 * {@inheritDoc}
134 */
135 @Override
136 public int describeContents() {
137 return 0;
138 }
139
140 @Override
Aurimas Liutikas4d1699d2019-08-28 13:01:05 -0700141 public void writeToParcel(@NonNull Parcel parcel, int flags) {
RyanlwLina0daddd2019-06-19 11:39:01 +0800142 parcel.writeInt(mGestureId);
143 parcel.writeInt(mDisplayId);
144 }
145
146 /**
147 * @see Parcelable.Creator
148 */
RyanlwLin0d17f042019-09-02 21:22:09 +0800149 public static final @NonNull Parcelable.Creator<AccessibilityGestureEvent> CREATOR =
150 new Parcelable.Creator<AccessibilityGestureEvent>() {
151 public AccessibilityGestureEvent createFromParcel(Parcel parcel) {
152 return new AccessibilityGestureEvent(parcel);
RyanlwLina0daddd2019-06-19 11:39:01 +0800153 }
154
RyanlwLin0d17f042019-09-02 21:22:09 +0800155 public AccessibilityGestureEvent[] newArray(int size) {
156 return new AccessibilityGestureEvent[size];
RyanlwLina0daddd2019-06-19 11:39:01 +0800157 }
158 };
159
160}