返回

无障碍检测:让你的应用程序触手可及

Android

无障碍检测对于确保你的应用程序对所有用户都可访问至关重要,包括残障人士。本文将引导你了解如何使用 Android 无障碍服务检测无障碍功能,使你的应用程序真正具有包容性。

普通无障碍检测

使用 AccessibilityManager 类的 isTouchExplorationEnabled() 方法,可以检测普通无障碍功能是否启用。如果返回 true,则表明启用了普通无障碍功能。

AccessibilityManager accessibilityManager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
boolean isAccessibilityEnabled = accessibilityManager.isTouchExplorationEnabled();

TalkBack 检测

检测 TalkBack 是否启用需要使用 AccessibilityServiceInfo 类。

AccessibilityManager accessibilityManager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
List<AccessibilityServiceInfo> accessibilityServices = accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
boolean isTalkBackEnabled = false;
for (AccessibilityServiceInfo serviceInfo : accessibilityServices) {
    if (serviceInfo.getId().equals("com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService")) {
        isTalkBackEnabled = true;
        break;
    }
}

使用 ACCESSIBILITY_SERVICE

要深入检测无障碍功能,可以使用 ACCESSIBILITY_SERVICE。首先,你需要在 AndroidManifest.xml 中声明权限:

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

然后,你可以使用 AccessibilityService 类来绑定到无障碍服务。

AccessibilityService accessibilityService = new AccessibilityService() {
    // Override methods to detect accessibility events
};
bindService(new Intent(this, accessibilityService.class), serviceConnection, Context.BIND_AUTO_CREATE);

结论

通过使用这些检测方法,你可以确保你的应用程序对所有用户都具有可访问性。通过使你的应用程序更加包容,你可以扩大你的用户群,并为每个人创造更积极的体验。