19648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/* 29648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Copyright (C) 2011 The Android Open Source Project 39648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 49648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 59648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * you may not use this file except in compliance with the License. 69648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * You may obtain a copy of the License at 79648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 89648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 99648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software 119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * See the License for the specific language governing permissions and 149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * limitations under the License. 159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpackage android.support.v4.view.accessibility; 189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build; 209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent; 219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/** 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link AccessibilityEvent} 240574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2617f0ca51e84eb8d9f70a64e97de1151739a04406Chris Banespublic final class AccessibilityEventCompat { 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static interface AccessibilityEventVersionImpl { 292bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar int getRecordCount(AccessibilityEvent event); 302bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar void appendRecord(AccessibilityEvent event, Object record); 312bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar Object getRecord(AccessibilityEvent event, int index); 322bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar void setContentChangeTypes(AccessibilityEvent event, int types); 332bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar int getContentChangeTypes(AccessibilityEvent event); 341ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setMovementGranularity(AccessibilityEvent event, int granularity); 351ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getMovementGranularity(AccessibilityEvent event); 361ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setAction(AccessibilityEvent event, int action); 371ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getAction(AccessibilityEvent event); 389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityEventStubImpl implements AccessibilityEventVersionImpl { 419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 42b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv @Override 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void appendRecord(AccessibilityEvent event, Object record) { 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 47b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv @Override 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object getRecord(AccessibilityEvent event, int index) { 499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 52b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv @Override 532bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public void setContentChangeTypes(AccessibilityEvent event, int types) { 542bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 552bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 562bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 572bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar @Override 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public int getRecordCount(AccessibilityEvent event) { 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return 0; 609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 612bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 622bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar @Override 632bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public int getContentChangeTypes(AccessibilityEvent event) { 642bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar return 0; 652bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 661ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 671ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 681ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setMovementGranularity(AccessibilityEvent event, int granularity) { 691ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 701ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 711ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 721ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getMovementGranularity(AccessibilityEvent event) { 731ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return 0; 741ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 751ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 761ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 771ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setAction(AccessibilityEvent event, int action) { 781ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 791ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 801ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 811ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getAction(AccessibilityEvent event) { 821ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return 0; 831ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityEventIcsImpl extends AccessibilityEventStubImpl { 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void appendRecord(AccessibilityEvent event, Object record) { 909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEventCompatIcs.appendRecord(event, record); 919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object getRecord(AccessibilityEvent event, int index) { 959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityEventCompatIcs.getRecord(event, index); 969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public int getRecordCount(AccessibilityEvent event) { 1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityEventCompatIcs.getRecordCount(event); 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1041ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver static class AccessibilityEventJellyBeanImpl extends AccessibilityEventIcsImpl { 1051ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 1061ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setMovementGranularity(AccessibilityEvent event, int granularity) { 1071ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver AccessibilityEventCompatJellyBean.setMovementGranularity(event, granularity); 1081ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 1091ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 1101ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 1111ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getMovementGranularity(AccessibilityEvent event) { 1121ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return AccessibilityEventCompatJellyBean.getMovementGranularity(event); 1131ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 1141ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 1151ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 1161ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setAction(AccessibilityEvent event, int action) { 1171ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver AccessibilityEventCompatJellyBean.setAction(event, action); 1181ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 1191ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 1201ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver @Override 1211ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getAction(AccessibilityEvent event) { 1221ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return AccessibilityEventCompatJellyBean.getAction(event); 1231ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 1241ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 1251ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 1261ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver static class AccessibilityEventKitKatImpl extends AccessibilityEventJellyBeanImpl { 1272bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 1282bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar @Override 1292bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public void setContentChangeTypes(AccessibilityEvent event, int types) { 1302bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar AccessibilityEventCompatKitKat.setContentChangeTypes(event, types); 1312bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 1322bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 1332bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar @Override 1342bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public int getContentChangeTypes(AccessibilityEvent event) { 1352bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar return AccessibilityEventCompatKitKat.getContentChangeTypes(event); 1362bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 1372bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 1382bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private final static AccessibilityEventVersionImpl IMPL; 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 1422bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar if (Build.VERSION.SDK_INT >= 19) { // KitKat 1432bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar IMPL = new AccessibilityEventKitKatImpl(); 1441ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } else if (Build.VERSION.SDK_INT >= 16) { // Jellybean 1451ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver IMPL = new AccessibilityEventJellyBeanImpl(); 1462bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } else if (Build.VERSION.SDK_INT >= 14) { // ICS 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityEventIcsImpl(); 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityEventStubImpl(); 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of a hover enter over a {@link android.view.View}. 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_VIEW_HOVER_ENTER = 0x00000080; 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of a hover exit over a {@link android.view.View}. 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_VIEW_HOVER_EXIT = 0x00000100; 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of starting a touch exploration gesture. 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 0x00000200; 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of ending a touch exploration gesture. 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 0x00000400; 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of changing the content of a window. 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800; 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of scrolling a view. 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_VIEW_SCROLLED = 0x00001000; 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Represents the event of changing the selection in an {@link android.widget.EditText}. 1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 0x00002000; 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 188b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv /** 189b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * Represents the event of an application making an announcement. 190b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv */ 191b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv public static final int TYPE_ANNOUNCEMENT = 0x00004000; 192b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv 193b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv /** 194b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * Represents the event of gaining accessibility focus. 195b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv */ 196b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 0x00008000; 197b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv 198b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv /** 199b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * Represents the event of clearing accessibility focus. 200b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv */ 201b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000; 202b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv 203b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv /** 204b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * Represents the event of traversing the text of a view at a given movement granularity. 205b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv */ 206b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 0x00020000; 207b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv 208b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv /** 209b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * Represents the event of beginning gesture detection. 210b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt */ 211b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt public static final int TYPE_GESTURE_DETECTION_START = 0x00040000; 212b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt 213b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt /** 214b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * Represents the event of ending gesture detection. 215b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt */ 216b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt public static final int TYPE_GESTURE_DETECTION_END = 0x00080000; 217b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt 218b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt /** 219b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * Represents the event of the user starting to touch the screen. 220b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt */ 221b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt public static final int TYPE_TOUCH_INTERACTION_START = 0x00100000; 222b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt 223b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt /** 224b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * Represents the event of the user ending to touch the screen. 225b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt */ 226b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt public static final int TYPE_TOUCH_INTERACTION_END = 0x00200000; 227b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt 228b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt /** 2291ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Represents the event change in the windows shown on the screen. 2301ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 2311ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public static final int TYPE_WINDOWS_CHANGED = 0x00400000; 2321ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 2331ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 2341ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Represents the event of a context click on a {@link android.view.View}. 2351ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 2361ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public static final int TYPE_VIEW_CONTEXT_CLICKED = 0x00800000; 2371ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 2381ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 2391ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Represents the event of the assistant currently reading the users screen context. 2401ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 2411ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public static final int TYPE_ASSIST_READING_CONTEXT = 0x01000000; 2421ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 2431ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 2442bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event: 2452bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * The type of change is not defined. 2462bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 2472bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0x00000000; 2482bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 2492bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 2502bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event: 2512bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * A node in the subtree rooted at the source node was added or removed. 2522bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 2532bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static final int CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001; 2542bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 2552bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 2562bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event: 2572bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * The node's text changed. 2582bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 2592bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static final int CONTENT_CHANGE_TYPE_TEXT = 0x00000002; 2602bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 2612bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 2622bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event: 2632bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * The node's content description changed. 2642bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 2652bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004; 2662bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 2672bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 268b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * Mask for {@link AccessibilityEvent} all types. 269b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * 270b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_VIEW_CLICKED 271b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_VIEW_LONG_CLICKED 272b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_VIEW_SELECTED 273b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_VIEW_FOCUSED 274b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED 275b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED 276b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED 277b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_VIEW_HOVER_ENTER 278b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_VIEW_HOVER_EXIT 279b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_TOUCH_EXPLORATION_GESTURE_START 280b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_TOUCH_EXPLORATION_GESTURE_END 281b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_WINDOW_CONTENT_CHANGED 282b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_VIEW_SCROLLED 283b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_VIEW_TEXT_SELECTION_CHANGED 284b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_ANNOUNCEMENT 285b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv * @see #TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY 286b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * @see #TYPE_GESTURE_DETECTION_START 287b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * @see #TYPE_GESTURE_DETECTION_END 288b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * @see #TYPE_TOUCH_INTERACTION_START 289b047962755c59a9855328ed273bae33a0663e21aCasey Burkhardt * @see #TYPE_TOUCH_INTERACTION_END 290b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv */ 291b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv public static final int TYPES_ALL_MASK = 0xFFFFFFFF; 292b1d4cb28db8b08974b651665bf4d1a7926c17b9calanv 2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /* 2949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Hide constructor from clients. 2959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private AccessibilityEventCompat() { 2979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Gets the number of records contained in the event. 3029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The number of records. 3049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static int getRecordCount(AccessibilityEvent event) { 3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getRecordCount(event); 3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Appends an {@link android.view.accessibility.AccessibilityRecord} to the end of 3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * event records. 3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param record The record to append. 3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @throws IllegalStateException If called from an AccessibilityService. 3169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static void appendRecord(AccessibilityEvent event, AccessibilityRecordCompat record) { 3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.appendRecord(event, record.getImpl()); 3199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Gets the record at a given index. 3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param index The index. 3259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The record at the specified index. 3269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static AccessibilityRecordCompat getRecord(AccessibilityEvent event, int index) { 3289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return new AccessibilityRecordCompat(IMPL.getRecord(event, index)); 3299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3304184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav 3314184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav /** 3324184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * Creates an {@link AccessibilityRecordCompat} from an {@link AccessibilityEvent} 3334184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * that can be used to manipulate the event properties defined in 3344184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * {@link android.view.accessibility.AccessibilityRecord}. 3354184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * <p> 3368f590dabd4e7d3fa4abfc74c91640690b63fc45aSvetoslav * <strong>Note:</strong> Do not call {@link AccessibilityRecordCompat#recycle()} on the 3378f590dabd4e7d3fa4abfc74c91640690b63fc45aSvetoslav * returned {@link AccessibilityRecordCompat}. Call {@link AccessibilityEvent#recycle()} 3384184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * in case you want to recycle the event. 3394184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * </p> 3404184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * 3414184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * @param event The from which to create a record. 3424184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav * @return An {@link AccessibilityRecordCompat}. 3434184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav */ 3444184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav public static AccessibilityRecordCompat asRecord(AccessibilityEvent event) { 3454184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav return new AccessibilityRecordCompat(event); 3464184a5ee0959c0071eb6eb94878de9c5408d4e5eSvetoslav } 3472bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 3482bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 3492bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Sets the bit mask of node tree changes signaled by an 3502bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * {@link #TYPE_WINDOW_CONTENT_CHANGED} event. 3512bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * 3522bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * @param changeTypes The bit mask of change types. 3532bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * @throws IllegalStateException If called from an AccessibilityService. 3542bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * @see #getContentChangeTypes(AccessibilityEvent) 3552bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 3562bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static void setContentChangeTypes(AccessibilityEvent event, int changeTypes) { 3572bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar IMPL.setContentChangeTypes(event, changeTypes); 3582bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 3592bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 3602bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar /** 3612bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * Gets the bit mask of change types signaled by an 3622bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * {@link #TYPE_WINDOW_CONTENT_CHANGED} event. A single event may represent 3632bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * multiple change types. 3642bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * 3652bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * @return The bit mask of change types. One or more of: 3662bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * <ul> 3672bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION} 3682bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_SUBTREE} 3692bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_TEXT} 3702bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * <li>{@link AccessibilityEvent#CONTENT_CHANGE_TYPE_UNDEFINED} 3712bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar * </ul> 3722bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar */ 3732bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar public static int getContentChangeTypes(AccessibilityEvent event) { 3742bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar return IMPL.getContentChangeTypes(event); 3752bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar } 3762bf89a9bae2b6110a77cf0b3754b567bb07d12a5Yigit Boyar 3771ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 3781ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Sets the movement granularity that was traversed. 3791ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * 3801ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @param granularity The granularity. 3811ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * 3821ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @throws IllegalStateException If called from an AccessibilityService. 3831ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 3841ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setMovementGranularity(AccessibilityEvent event, int granularity) { 3851ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver IMPL.setMovementGranularity(event, granularity); 3861ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 3871ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 3881ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 3891ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Gets the movement granularity that was traversed. 3901ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * 3911ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @return The granularity. 3921ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 3931ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getMovementGranularity(AccessibilityEvent event) { 3941ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return IMPL.getMovementGranularity(event); 3951ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 3961ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 3971ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 3981ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Sets the performed action that triggered this event. 3991ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <p> 4001ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Valid actions are defined in {@link AccessibilityNodeInfoCompat}: 4011ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <ul> 4021ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>{@link AccessibilityNodeInfoCompat#ACTION_ACCESSIBILITY_FOCUS} 4031ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_ACCESSIBILITY_FOCUS} 4041ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_FOCUS} 4051ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLEAR_SELECTION} 4061ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>{@link AccessibilityNodeInfoCompat#ACTION_CLICK} 4071ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * <li>etc. 4081ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * </ul> 4091ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * 4101ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @param action The action. 4111ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @throws IllegalStateException If called from an AccessibilityService. 4121ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @see AccessibilityNodeInfoCompat#performAction(int) 4131ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 4141ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public void setAction(AccessibilityEvent event, int action) { 4151ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver IMPL.setAction(event, action); 4161ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 4171ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver 4181ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver /** 4191ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * Gets the performed action that triggered this event. 4201ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * 4211ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver * @return The action. 4221ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver */ 4231ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver public int getAction(AccessibilityEvent event) { 4241ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver return IMPL.getAction(event); 4251ef22af9051a858183b028cc4f7c02c973653be4Phil Weaver } 4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 427