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