Android Studio 在Android中,如何检查TalkBack开/关并检测这些状态何时更改?

2nc8po8w  于 2023-08-07  发布在  Android
关注(0)|答案(1)|浏览(94)

我在一个Android移动的应用程序工作,需要知道如果TalkBack是活跃的启动和检测TalkBack关闭/状态变化,而应用程序正在运行。
以前的代码使用JavaScript可访问性组件,并调用C++,然后调用Java。现在我们只需要Java代码。
实现此功能的最佳方法是什么?

8yparm6h

8yparm6h1#

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

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

字符串
这里没有“订阅”更改的机制,您必须通过轮询此值来滚动自己的更改。我在Kotlin中做过这件事,但没有在java中做过,它降低了应用程序对所有用户的效率(即使只是一点点)。
您还应该意识到,在通用设计术语中,您将违反“公平访问”的原则:
该设计对具有不同能力的人来说是有用的和有市场的。
指导方针:
1a.为所有用户提供相同的使用方式:尽可能相同;当不相等时。
1b.避免隔离或侮辱任何用户。
1c.隐私、安全和保障规定应平等地提供给所有用户。
1d.使设计吸引所有用户。
这并不是告诉你你的特定用例(我不能从问题中看出)不需要它,但请记住其他人也会阅读这个答案。它被认为是bad practice to detect screen readers
其理由可归结为两个问题:发展和隐私。对双方都不好。
核心原因是,仅支持TalkBack并不能支持所有的辅助功能,在这里创建一个特定的机制,你会错过语音访问用户,切换访问用户,屏幕放大器用户,甚至是自定义辅助功能服务用户。

相关问题