Search code examples
androidaccessibility

Detect if 'High contrast' is enabled in Android accessibility settings


How can I detect if 'High Contrast' setting (available on Android 5.0+) is enabled in Accessibility settings?


Solution

  • In the AccessibilityManager class (see source here) you have a public method called isHighTextContrastEnabled that you can use to get your information:

    /**
     * Returns if the high text contrast in the system is enabled.
     * <p>
     * <strong>Note:</strong> You need to query this only if you application is
     * doing its own rendering and does not rely on the platform rendering pipeline.
     * </p>
     *
     * @return True if high text contrast is enabled, false otherwise.
     *
     * @hide
     */
    public boolean isHighTextContrastEnabled() {
        synchronized (mLock) {
            IAccessibilityManager service = getServiceLocked();
            if (service == null) {
                return false;
            }
            return mIsHighTextContrastEnabled;
        }
    }
    

    So in your code, you can access this method by doing so (if you're in an Activity):

    AccessibilityManager am = (AccessibilityManager) this.getSystemService(Context.ACCESSIBILITY_SERVICE);
    boolean isHighTextContrastEnabled = am.isHighTextContrastEnabled();