获取启用/禁用状态和辅助功能颜色反转模式

5

在我的应用程序中,当用户启用辅助功能颜色反转模式时,我需要进行一些UI更改。

我们有没有API可以检查Android中颜色反转模式的启用/禁用状态?


基于颜色反转,您需要进行什么更改?即使可能,我也想不出任何情况下这将是一个良好的辅助功能实践。 - Steve Repsher
1
在我的屏幕上,有一些地方是灰色背景和白色文本。现在,当应用反转模式时,系统将把灰色背景变成接近黑色,白色文本变成黑色。因此,在这种情况下,由于背景和文本颜色都是黑色,用户无法看到文本。因此,我的意图是,如果启用反转,则将文本颜色更改为白色或任何其他可见颜色。我想通过编程实现这个功能。 - Ashok Reddy Narra
2个回答

5
以下是检查启用/禁用辅助功能反转模式状态的代码。在一些手机上,反转模式将以“负色”形式提供。
public boolean isInversionModeEnabled() {
    boolean isInversionEnabled =  false;
    int accessibilityEnabled = 0;
    try {
        accessibilityEnabled = Settings.Secure.getInt(this.getContentResolver(),
                android.provider.Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
    } catch (SettingNotFoundException e) {
        Log.d(TAG, "Error finding setting ACCESSIBILITY_DISPLAY_INVERSION_ENABLED: " + e.getMessage());
        Log.d(TAG, "Checking negative color enabled status");
        final String SEM_HIGH_CONTRAST = "high_contrast";
        accessibilityEnabled = Settings.System.getInt(getContentResolver(), SEM_HIGH_CONTRAST, 0);
    }
    if (accessibilityEnabled == 1) {
        Log.d(TAG, "inversion  or negative colour is enabled");
        isInversionEnabled = true;
    } else {
        Log.d(TAG, "inversion  or negative colour is disabled");
    }
    return isInversionEnabled;

}

high_contrast 会在哪些设备/辅助功能设置中返回 true? - Nino van Hooff

0

也许原始文本颜色应该是黑色?实际上我们的HID就是这样,原因是当用户打开屏幕(比如登录屏幕,其中有用户名和密码)时,灰色边框上的按钮文本是白色的,一旦用户输入用户名和密码,按钮颜色将变为黑色。因此,当我打开我的屏幕时,我想检查反转模式是否已启用。如果反转模式已启用,则我想将按钮的颜色更改为灰色或其他可见的颜色。同样,我的应用程序应该监听(类似广播),以便用户可以启用/禁用反转模式。 - Ashok Reddy Narra
我理解你想做什么,但你这样做的动机是基于对比度比率的错误判断。我的观点是,在不进行颜色反转的情况下,你原始内容中的对比度比率在数学上是等效的。你正在用错误的方式来解决问题。如果你将非反转颜色改为具有良好对比度的颜色,则反转模式就不会成为问题。 - Steve Repsher
好的,让我检查一下。您能否就以下问题提供您的输入?
  • 是否有API可以检查反转模式是否启用或禁用?
  • 是否有方法可以通知应用程序反转模式启用/禁用的动态更改?
- Ashok Reddy Narra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接