如何检查TalkBack开/关状态并检测这些状态何时发生变化?

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

我正在开发 Android 移动应用程序,需要知道 TalkBack 在启动时是否处于活动状态,并在应用程序运行时检测 TalkBack 关闭/开启状态更改。

以前的代码使用 JavaScript 可访问性组件并调用 C++,然后调用 Java。现在我们只需要 Java 代码。

如何实现此功能?

java android android-studio accessibility talkback
1个回答
-1
投票

有关此主题的先前答案一样,您可以使用下面的代码片段检查状态。这是最佳实践,因为并非所有版本的 TalkBack(屏幕阅读器)都相同。谷歌、三星和亚马逊都有自己的屏幕阅读器。更不用说用户可能已经安装了第 3 方屏幕阅读器。

AccessibilityManager am = (AccessibilityManager) [context.]getSystemService(ACCESSIBILITY_SERVICE);
boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled();

这里没有“订阅”更改的机制,您必须通过轮询此值来滚动自己的更改。我已经在 Kotlin 中完成了此操作,但没有在 java 中完成此操作,它降低了所有用户的应用程序效率(即使只是一点点)。

您还应该意识到,在通用设计术语中,您将违背“公平访问”原则

该设计对于具有不同能力的人来说是有用且适合市场的。

指南:
1a.为所有用户提供相同的使用方式:尽可能相同;不存在时等效。
1b.避免隔离或侮辱任何用户。
1c.隐私、安全和安全的规定应平等地提供给所有用户。
1d。让设计对所有用户都有吸引力。

这并不是告诉您您的特定用例(我无法从问题中看出)不需要它,但请记住其他人也会阅读这个答案。检测屏幕阅读器被认为是不好的做法

原因归结为两个问题:开发和隐私。这对双方都不好。

核心原因是,你并不能通过单独支持TalkBack来支持所有辅助功能,并在这里创建一个特定的机制,你缺少语音访问用户、切换访问用户、屏幕放大镜用户,甚至自定义辅助功能服务用户。

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