Source code
package android.support.v4.view.accessibility;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.os.Build.VERSION;
import android.view.accessibility.AccessibilityManager;
import java.util.Collections;
import java.util.List;
public class AccessibilityManagerCompat {
private static final AccessibilityManagerVersionImpl IMPL;
interface AccessibilityManagerVersionImpl {
boolean addAccessibilityStateChangeListener(AccessibilityManager accessibilityManager, AccessibilityStateChangeListenerCompat accessibilityStateChangeListenerCompat);
List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(AccessibilityManager accessibilityManager, int i);
List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(AccessibilityManager accessibilityManager);
boolean isTouchExplorationEnabled(AccessibilityManager accessibilityManager);
Object newAccessiblityStateChangeListener(AccessibilityStateChangeListenerCompat accessibilityStateChangeListenerCompat);
boolean removeAccessibilityStateChangeListener(AccessibilityManager accessibilityManager, AccessibilityStateChangeListenerCompat accessibilityStateChangeListenerCompat);
}
public static abstract class AccessibilityStateChangeListenerCompat {
final Object mListener = AccessibilityManagerCompat.IMPL.newAccessiblityStateChangeListener(this);
public abstract void onAccessibilityStateChanged(boolean z);
}
static class AccessibilityManagerStubImpl implements AccessibilityManagerVersionImpl {
AccessibilityManagerStubImpl() {
}
public Object newAccessiblityStateChangeListener(AccessibilityStateChangeListenerCompat listener) {
return null;
}
public boolean addAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return false;
}
public boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return false;
}
public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(AccessibilityManager manager, int feedbackTypeFlags) {
return Collections.emptyList();
}
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(AccessibilityManager manager) {
return Collections.emptyList();
}
public boolean isTouchExplorationEnabled(AccessibilityManager manager) {
return false;
}
}
static class AccessibilityManagerIcsImpl extends AccessibilityManagerStubImpl {
AccessibilityManagerIcsImpl() {
}
public Object newAccessiblityStateChangeListener(final AccessibilityStateChangeListenerCompat listener) {
return AccessibilityManagerCompatIcs.newAccessibilityStateChangeListener(new AccessibilityStateChangeListenerBridge() {
public void onAccessibilityStateChanged(boolean enabled) {
listener.onAccessibilityStateChanged(enabled);
}
});
}
public boolean addAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return AccessibilityManagerCompatIcs.addAccessibilityStateChangeListener(manager, listener.mListener);
}
public boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return AccessibilityManagerCompatIcs.removeAccessibilityStateChangeListener(manager, listener.mListener);
}
public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(AccessibilityManager manager, int feedbackTypeFlags) {
return AccessibilityManagerCompatIcs.getEnabledAccessibilityServiceList(manager, feedbackTypeFlags);
}
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(AccessibilityManager manager) {
return AccessibilityManagerCompatIcs.getInstalledAccessibilityServiceList(manager);
}
public boolean isTouchExplorationEnabled(AccessibilityManager manager) {
return AccessibilityManagerCompatIcs.isTouchExplorationEnabled(manager);
}
}
static {
if (VERSION.SDK_INT >= 14) {
IMPL = new AccessibilityManagerIcsImpl();
} else {
IMPL = new AccessibilityManagerStubImpl();
}
}
public static boolean addAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return IMPL.addAccessibilityStateChangeListener(manager, listener);
}
public static boolean removeAccessibilityStateChangeListener(AccessibilityManager manager, AccessibilityStateChangeListenerCompat listener) {
return IMPL.removeAccessibilityStateChangeListener(manager, listener);
}
public static List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(AccessibilityManager manager) {
return IMPL.getInstalledAccessibilityServiceList(manager);
}
public static List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(AccessibilityManager manager, int feedbackTypeFlags) {
return IMPL.getEnabledAccessibilityServiceList(manager, feedbackTypeFlags);
}
public static boolean isTouchExplorationEnabled(AccessibilityManager manager) {
return IMPL.isTouchExplorationEnabled(manager);
}
}