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.accessibilityservice.AccessibilityServiceInfo; 209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build; 219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.support.v4.view.accessibility.AccessibilityManagerCompatIcs.AccessibilityStateChangeListenerBridge; 220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganovimport android.view.accessibility.AccessibilityManager; 239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 24f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganovimport java.util.Collections; 259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.List; 269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/** 280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link AccessibilityManager} 290574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityManagerCompat { 329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov interface AccessibilityManagerVersionImpl { 349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityStateChangeListener( 359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener); 369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean addAccessibilityStateChangeListener(AccessibilityManager manager, 379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener); 389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, 399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener); 409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( 419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager,int feedbackTypeFlags); 429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList( 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager); 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean isTouchExplorationEnabled(AccessibilityManager manager); 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityManagerStubImpl implements AccessibilityManagerVersionImpl { 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityStateChangeListener( 499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean addAccessibilityStateChangeListener(AccessibilityManager manager, 549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( 649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager, int feedbackTypeFlags) { 65f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov return Collections.emptyList(); 669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList( 699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager) { 70f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov return Collections.emptyList(); 719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean isTouchExplorationEnabled(AccessibilityManager manager) { 749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityManagerIcsImpl extends AccessibilityManagerStubImpl { 799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityStateChangeListener( 829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov final AccessibilityStateChangeListenerCompat listener) { 839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.newAccessibilityStateChangeListener( 849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov new AccessibilityStateChangeListenerBridge() { 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onAccessibilityStateChanged(boolean enabled) { 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov listener.onAccessibilityStateChanged(enabled); 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov }); 899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean addAccessibilityStateChangeListener(AccessibilityManager manager, 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.addAccessibilityStateChangeListener(manager, 959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov listener.mListener); 969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, 1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov final AccessibilityStateChangeListenerCompat listener) { 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.removeAccessibilityStateChangeListener(manager, 1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov listener.mListener); 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( 1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager, int feedbackTypeFlags) { 1089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.getEnabledAccessibilityServiceList(manager, 1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov feedbackTypeFlags); 1109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList( 1149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager) { 1159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.getInstalledAccessibilityServiceList(manager); 1169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean isTouchExplorationEnabled(AccessibilityManager manager) { 1209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityManagerCompatIcs.isTouchExplorationEnabled(manager); 1219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 1259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov if (Build.VERSION.SDK_INT >= 14) { // ICS 1269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityManagerIcsImpl(); 1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityManagerStubImpl(); 1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final AccessibilityManagerVersionImpl IMPL; 1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Registers an {@link AccessibilityManager.AccessibilityStateChangeListener} for changes in 1369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the global accessibility state of the system. 1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param manager The accessibility manager. 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param listener The listener. 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if successfully registered. 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static boolean addAccessibilityStateChangeListener(AccessibilityManager manager, 1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.addAccessibilityStateChangeListener(manager, listener); 1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Unregisters an {@link AccessibilityManager.AccessibilityStateChangeListener}. 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param manager The accessibility manager. 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param listener The listener. 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if successfully unregistered. 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityStateChangeListenerCompat listener) { 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.removeAccessibilityStateChangeListener(manager, listener); 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the {@link AccessibilityServiceInfo}s of the installed accessibility services. 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param manager The accessibility manager. 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return An unmodifiable list with {@link AccessibilityServiceInfo}s. 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList( 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager) { 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getInstalledAccessibilityServiceList(manager); 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the {@link AccessibilityServiceInfo}s of the enabled accessibility services 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * for a given feedback type. 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param manager The accessibility manager. 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param feedbackTypeFlags The feedback type flags. 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return An unmodifiable list with {@link AccessibilityServiceInfo}s. 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_AUDIBLE 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_GENERIC 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_HAPTIC 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_SPOKEN 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_VISUAL 1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( 1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityManager manager, int feedbackTypeFlags) { 1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getEnabledAccessibilityServiceList(manager, feedbackTypeFlags); 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 190e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov * Returns if the touch exploration in the system is enabled. 191e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov * 192e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov * @param manager The accessibility manager. 193e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov * @return True if touch exploration is enabled, false otherwise. 194e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov */ 195dc5487a46b75572fa9120b22e89487c0178ff0a0Svetoslav Ganov public static boolean isTouchExplorationEnabled(AccessibilityManager manager) { 196e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov return IMPL.isTouchExplorationEnabled(manager); 197e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov } 198e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov 199e70a95f70708c0168154c6753864cbbfc78c649fSvetoslav Ganov /** 2009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Listener for the accessibility state. 2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static abstract class AccessibilityStateChangeListenerCompat { 2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov final Object mListener; 2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public AccessibilityStateChangeListenerCompat() { 2069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov mListener = IMPL.newAccessiblityStateChangeListener(this); 2079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 2109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Called back on change in the accessibility state. 2119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param enabled Whether accessibility is enabled. 2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public abstract void onAccessibilityStateChanged(boolean enabled); 2159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 217