如何检测Android上的辅助功能设置已启用/禁用

问题描述 投票:0回答:3

我对high contrast textcolor correctionmagnification设置特别感兴趣。我在网上做了一些研究,找不到我想要的东西。我看到一个关于检测high contrast text的答案:

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

但不知何故,它给了我isHighTextContrastEnabled()的错误,说它是未定义的类型AccessibilityManager。

另外两个设置检测也没有找到解决方案。

android
3个回答
1
投票
    AccessibilityManager am = (AccessibilityManager) this.getSystemService(Context.ACCESSIBILITY_SERVICE);

    Class clazz = am.getClass();
    Method m = null;
    try {
        m = clazz.getMethod("isHighTextContrastEnabled",null);
    } catch (NoSuchMethodException e) {
        Log.w("FAIL", "isHighTextContrastEnabled not found in AccessibilityManager");
    }


    Object result = null;
    try {
        result = m.invoke(am, null);
        if (result != null && result instanceof Boolean)  {
            Boolean b = (Boolean)result;
            Log.d("result", "b =" + b);
        }
    }  catch (Exception e) {
        android.util.Log.d("fail",  "isHighTextContrastEnabled invoked with an exception" + e.getMessage());
        return;
    }

我做测试,它返回false,所以它有效


1
投票

用它来进行色彩校正:

int color_correction_enabled = 0;

尝试{color_correction_enabled = Settings.Secure.getInt(this.getContentResolver(),“accessibility_display_daltonizer_enabled”);

} catch(例外e){

color_correction_enabled = 0; //表示默认false}


0
投票

真是太棒了

private fun checkForAcessibility(): Boolean {
    try {
        val accessibilityManager = context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
        val accessibilityManagerClass = accessibilityManager.javaClass
        val isHighTextContrastEnabledMethod = accessibilityManagerClass.getMethod("isHighTextContrastEnabled")
        val result: Any = isHighTextContrastEnabledMethod.invoke(accessibilityManager) ?: return AccessibilityEnabledValue.ERROR_QUERYING_VALUE

        if (result !is Boolean) {
            return AccessibilityEnabledValue.ERROR_QUERYING_VALUE
        }

        return if (result) {
            AccessibilityEnabledValue.TRUE
        } else {
            AccessibilityEnabledValue.FALSE
        }
    } catch (e: Exception) {
        return AccessibilityEnabledValue.ERROR_QUERYING_VALUE
    }
}




enum class AccessibilityEnabledValue(val value: String) {
    TRUE("true"),
    FALSE("false"),
    ERROR_QUERYING_VALUE("error_querying_value")
}

我注意到isHighTextContrastEnabled()方法不包含参数。

© www.soinside.com 2019 - 2024. All rights reserved.