如何知道 Android TalkBack 是否处于活动状态?

新手上路,请多包涵

我正在开发一个使用 TalkBack 来指导人们完成它的应用程序。然而,在那些情况下,我希望应用程序的布局有一些细微的差别,以便导航更容易,并且还有额外的语音输出(使用 TextToSpeech)来帮助指导用户。

我的问题是,如果用户激活了 TalkBack,我只需要这些更改和额外的输出。

有什么办法可以知道它是不是?我没有找到任何特定于直接访问 TalkBack 设置的东西,但我希望有某种形式的访问一般电话设置可以让我知道我需要什么。

提前致以问候和感谢。

原文由 David Carvalho 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 612
2 个回答

例如,查看 Eyes-Free shell 应用程序(通过 组线程)中的 HomeLauncher.java 文件中的 isScreenReaderActive()

总结一下:您使用 Intents 检测所有屏幕阅读器,然后查询每个屏幕阅读器的状态提供程序以查看它是否处于活动状态。

如果您真的只想将其限制为 TalkBack,您可以尝试检查 ResolveInfo.serviceInfo.packageName 对于从 queryIntentServices() 返回的每个结果,看看它是否与 TalkBack 包匹配。

原文由 Mike 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐的方法是查询 AccessibilityManager 以获取无障碍服务的启用状态。

 AccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
boolean isAccessibilityEnabled = am.isEnabled();
boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled();

原文由 caseyburkhardt 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏