• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 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 
17 package android.support.v4.view.accessibility;
18 
19 import android.os.Build;
20 import android.view.accessibility.AccessibilityEvent;
21 import android.view.accessibility.AccessibilityRecord;
22 
23 /**
24  * Helper for accessing features in {@link AccessibilityEvent}.
25  */
26 public final class AccessibilityEventCompat {
27     /**
28      * Represents the event of a hover enter over a {@link android.view.View}.
29      * @deprecated Use {@link  AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} directly.
30      */
31     @Deprecated
32     public static final int TYPE_VIEW_HOVER_ENTER = AccessibilityEvent.TYPE_VIEW_HOVER_ENTER;
33 
34     /**
35      * Represents the event of a hover exit over a {@link android.view.View}.
36      * @deprecated Use {@link  AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} directly.
37      */
38     @Deprecated
39     public static final int TYPE_VIEW_HOVER_EXIT = AccessibilityEvent.TYPE_VIEW_HOVER_EXIT;
40 
41     /**
42      * Represents the event of starting a touch exploration gesture.
43      * @deprecated Use {@link  AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} directly.
44      */
45     @Deprecated
46     public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START =
47             AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START;
48 
49     /**
50      * Represents the event of ending a touch exploration gesture.
51      * @deprecated Use {@link AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} directly.
52      */
53     @Deprecated
54     public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END =
55             AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END;
56 
57     /**
58      * Represents the event of changing the content of a window.
59      * @deprecated Use {@link AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} directly.
60      */
61     @Deprecated
62     public static final int TYPE_WINDOW_CONTENT_CHANGED =
63             AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
64 
65     /**
66      * Represents the event of scrolling a view.
67      * @deprecated Use {@link AccessibilityEvent#TYPE_VIEW_SCROLLED} directly.
68      */
69     @Deprecated
70     public static final int TYPE_VIEW_SCROLLED = AccessibilityEvent.TYPE_VIEW_SCROLLED;
71 
72     /**
73      * Represents the event of changing the selection in an {@link android.widget.EditText}.
74      * @deprecated Use {@link AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} directly.
75      */
76     @Deprecated
77     public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED =
78             AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED;
79 
80     /**
81      * Represents the event of an application making an announcement.
82      */
83     public static final int TYPE_ANNOUNCEMENT = 0x00004000;
84 
85     /**
86      * Represents the event of gaining accessibility focus.
87      */
88     public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 0x00008000;
89 
90     /**
91      * Represents the event of clearing accessibility focus.
92      */
93     public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000;
94 
95     /**
96      * Represents the event of traversing the text of a view at a given movement granularity.
97      */
98     public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 0x00020000;
99 
100     /**
101      * Represents the event of beginning gesture detection.
102      */
103     public static final int TYPE_GESTURE_DETECTION_START = 0x00040000;
104 
105     /**
106      * Represents the event of ending gesture detection.
107      */
108     public static final int TYPE_GESTURE_DETECTION_END = 0x00080000;
109 
110     /**
111      * Represents the event of the user starting to touch the screen.
112      */
113     public static final int TYPE_TOUCH_INTERACTION_START = 0x00100000;
114 
115     /**
116      * Represents the event of the user ending to touch the screen.
117      */
118     public static final int TYPE_TOUCH_INTERACTION_END = 0x00200000;
119 
120     /**
121      * Represents the event change in the windows shown on the screen.
122      */
123     public static final int TYPE_WINDOWS_CHANGED = 0x00400000;
124 
125     /**
126      * Represents the event of a context click on a {@link android.view.View}.
127      */
128     public static final int TYPE_VIEW_CONTEXT_CLICKED = 0x00800000;
129 
130     /**
131      * Represents the event of the assistant currently reading the users screen context.
132      */
133     public static final int TYPE_ASSIST_READING_CONTEXT = 0x01000000;
134 
135     /**
136      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
137      * The type of change is not defined.
138      */
139     public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0x00000000;
140 
141     /**
142      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
143      * A node in the subtree rooted at the source node was added or removed.
144      */
145     public static final int CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001;
146 
147     /**
148      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
149      * The node's text changed.
150      */
151     public static final int CONTENT_CHANGE_TYPE_TEXT = 0x00000002;
152 
153     /**
154      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
155      * The node's content description changed.
156      */
157     public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004;
158 
159     /**
160      * Mask for {@link AccessibilityEvent} all types.
161      *
162      * @see AccessibilityEvent#TYPE_VIEW_CLICKED
163      * @see AccessibilityEvent#TYPE_VIEW_LONG_CLICKED
164      * @see AccessibilityEvent#TYPE_VIEW_SELECTED
165      * @see AccessibilityEvent#TYPE_VIEW_FOCUSED
166      * @see AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED
167      * @see AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED
168      * @see AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED
169      * @see AccessibilityEvent#TYPE_VIEW_HOVER_ENTER
170      * @see AccessibilityEvent#TYPE_VIEW_HOVER_EXIT
171      * @see AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START
172      * @see AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END
173      * @see AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED
174      * @see AccessibilityEvent#TYPE_VIEW_SCROLLED
175      * @see AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED
176      * @see #TYPE_ANNOUNCEMENT
177      * @see #TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY
178      * @see #TYPE_GESTURE_DETECTION_START
179      * @see #TYPE_GESTURE_DETECTION_END
180      * @see #TYPE_TOUCH_INTERACTION_START
181      * @see #TYPE_TOUCH_INTERACTION_END
182      * @see #TYPE_WINDOWS_CHANGED
183      * @see #TYPE_VIEW_CONTEXT_CLICKED
184      * @see #TYPE_ASSIST_READING_CONTEXT
185      */
186     public static final int TYPES_ALL_MASK = 0xFFFFFFFF;
187 
188     /*
189      * Hide constructor from clients.
190      */
AccessibilityEventCompat()191     private AccessibilityEventCompat() {
192 
193     }
194 
195     /**
196      * Gets the number of records contained in the event.
197      *
198      * @return The number of records.
199      *
200      * @deprecated Use {@link AccessibilityEvent#getRecordCount()} directly.
201      */
202     @Deprecated
getRecordCount(AccessibilityEvent event)203     public static int getRecordCount(AccessibilityEvent event) {
204         return event.getRecordCount();
205     }
206 
207     /**
208      * Appends an {@link android.view.accessibility.AccessibilityRecord} to the end of
209      * event records.
210      *
211      * @param record The record to append.
212      *
213      * @throws IllegalStateException If called from an AccessibilityService.
214      *
215      * @deprecated Use {@link AccessibilityEvent#appendRecord(AccessibilityRecord)} directly.
216      */
217     @Deprecated
appendRecord(AccessibilityEvent event, AccessibilityRecordCompat record)218     public static void appendRecord(AccessibilityEvent event, AccessibilityRecordCompat record) {
219         event.appendRecord((AccessibilityRecord) record.getImpl());
220     }
221 
222     /**
223      * Gets the record at a given index.
224      *
225      * @param index The index.
226      * @return The record at the specified index.
227      *
228      * @deprecated Use {@link AccessibilityEvent#getRecord(int)} directly.
229      */
230     @Deprecated
getRecord(AccessibilityEvent event, int index)231     public static AccessibilityRecordCompat getRecord(AccessibilityEvent event, int index) {
232         return new AccessibilityRecordCompat(event.getRecord(index));
233     }
234 
235     /**
236      * Creates an {@link AccessibilityRecordCompat} from an {@link AccessibilityEvent}
237      * that can be used to manipulate the event properties defined in
238      * {@link android.view.accessibility.AccessibilityRecord}.
239      * <p>
240      * <strong>Note:</strong> Do not call {@link AccessibilityRecordCompat#recycle()} on the
241      * returned {@link AccessibilityRecordCompat}. Call {@link AccessibilityEvent#recycle()}
242      * in case you want to recycle the event.
243      * </p>
244      *
245      * @param event The from which to create a record.
246      * @return An {@link AccessibilityRecordCompat}.
247      *
248      * @deprecated Use the {@link AccessibilityEvent} directly as {@link AccessibilityRecord}.
249      */
250     @Deprecated
asRecord(AccessibilityEvent event)251     public static AccessibilityRecordCompat asRecord(AccessibilityEvent event) {
252         return new AccessibilityRecordCompat(event);
253     }
254 
255     /**
256      * Sets the bit mask of node tree changes signaled by an
257      * {@link #TYPE_WINDOW_CONTENT_CHANGED} event.
258      *
259      * @param changeTypes The bit mask of change types.
260      * @throws IllegalStateException If called from an AccessibilityService.
261      * @see #getContentChangeTypes(AccessibilityEvent)
262      */
setContentChangeTypes(AccessibilityEvent event, int changeTypes)263     public static void setContentChangeTypes(AccessibilityEvent event, int changeTypes) {
264         if (Build.VERSION.SDK_INT >= 19) {
265             event.setContentChangeTypes(changeTypes);
266         }
267     }
268 
269     /**
270      * Gets the bit mask of change types signaled by an
271      * {@link #TYPE_WINDOW_CONTENT_CHANGED} event. A single event may represent
272      * multiple change types.
273      *
274      * @return The bit mask of change types. One or more of:
275      *         <ul>
276      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION}
277      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_SUBTREE}
278      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_TEXT}
279      *         <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_UNDEFINED}
280      *         </ul>
281      */
getContentChangeTypes(AccessibilityEvent event)282     public static int getContentChangeTypes(AccessibilityEvent event) {
283         if (Build.VERSION.SDK_INT >= 19) {
284             return event.getContentChangeTypes();
285         } else {
286             return 0;
287         }
288     }
289 
290     /**
291      * Sets the movement granularity that was traversed.
292      *
293      * @param granularity The granularity.
294      *
295      * @throws IllegalStateException If called from an AccessibilityService.
296      */
setMovementGranularity(AccessibilityEvent event, int granularity)297     public static void setMovementGranularity(AccessibilityEvent event, int granularity) {
298         if (Build.VERSION.SDK_INT >= 16) {
299             event.setMovementGranularity(granularity);
300         }
301     }
302 
303     /**
304      * Gets the movement granularity that was traversed.
305      *
306      * @return The granularity.
307      */
getMovementGranularity(AccessibilityEvent event)308     public static int getMovementGranularity(AccessibilityEvent event) {
309         if (Build.VERSION.SDK_INT >= 16) {
310             return event.getMovementGranularity();
311         } else {
312             return 0;
313         }
314     }
315 
316     /**
317      * Sets the performed action that triggered this event.
318      * <p>
319      * Valid actions are defined in {@link AccessibilityNodeInfoCompat}:
320      * <ul>
321      * <li>{@link AccessibilityNodeInfoCompat#ACTION_ACCESSIBILITY_FOCUS}
322      * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_ACCESSIBILITY_FOCUS}
323      * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_FOCUS}
324      * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_SELECTION}
325      * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLICK}
326      * <li>etc.
327      * </ul>
328      *
329      * @param action The action.
330      * @throws IllegalStateException If called from an AccessibilityService.
331      * @see AccessibilityNodeInfoCompat#performAction(int)
332      */
setAction(AccessibilityEvent event, int action)333     public static void setAction(AccessibilityEvent event, int action) {
334         if (Build.VERSION.SDK_INT >= 16) {
335             event.setAction(action);
336         }
337     }
338 
339     /**
340      * Gets the performed action that triggered this event.
341      *
342      * @return The action.
343      */
getAction(AccessibilityEvent event)344     public static int getAction(AccessibilityEvent event) {
345         if (Build.VERSION.SDK_INT >= 16) {
346             return event.getAction();
347         } else {
348             return 0;
349         }
350     }
351 }
352