Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 270
newdev92 Avatar asked Dec 22 '15 08:12

newdev92


People also ask

How do you get high contrast mode on Android?

On your device, open the Settings app. Display size and text. Turn High contrast text on or off.

What is high contrast accessibility?

High Contrast mode is an accessibility feature that changes the look of our website and Windows applications by replacing the color of the different elements (like background, buttons, or text) with some user's set up colors.


1 Answers

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();
like image 85
alxscms Avatar answered Sep 28 '22 06:09

alxscms