gpt4 book ai didi

android - 辅助功能 : Talkback, WebView 和用户的区域设置

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:05 25 4
gpt4 key购买 nike

我开发了一个包含 Webview 的应用程序。我想让我的应用程序完全可访问,因此对于 webview 元素,我希望 TalkBack 以完全可访问的方式读取 html 元素,例如“标题”、“横幅”、“EditText”。

我看到 WebView 中的 TTS 过程是通过 Chromium AccessibilityInjector.java 类通过 JS 注入(inject)完成的。这会将此脚本注入(inject)页面,该页面只有英文消息。结果是,当设备使用另一种语言时,TTS 无论如何都会用英语读取这些 html 元素。

现在我无法调试或扩展 chromium webclient,那么如何让 TTS 根据用户的语言环境读取我的页面?

编辑:顺便说一句,我正在使用 jQuery Mobile。

最佳答案

以防万一有人遇到这个问题:我不得不应用一个丑陋的解决方法来解决这个问题。每当我加载一个页面并启用 TalkBack 时,我都会重新注入(inject)包含要读取的文本的 javascript 变量,以及它们的本地化副本。例如,对于西类牙语文本:

view.loadUrl("javascript:window.setTimeout(function(){" +
"window.console.log(\"Injecting messages.\");" +
"cvox.TestMessages[\"chromevox_input_type_text\"] = {message: \"cuadro de edición\"};" +
"cvox.TestMessages[\"chromevox_input_type_radio\"] = {message: \"botón de opción\"};" +
"cvox.TestMessages[\"chromevox_selected\"] = {message: \"seleccionado\"};" +
"cvox.TestMessages[\"chromevox_unselected\"] = {message: \"no seleccionado\"};" +
"cvox.TestMessages[\"chromevox_radio_selected_state\"] = {message: \"seleccionado\"};" +
"cvox.TestMessages[\"chromevox_radio_unselected_state\"] = {message: \"no seleccionado\"};" +
"cvox.TestMessages[\"chromevox_input_type_submit\"] = {message: \"botón\"};" +
"cvox.TestMessages[\"chromevox_input_type_button\"] = {message: \"botón\"};" +
"cvox.TestMessages[\"chromevox_tag_button\"] = {message: \"botón\"};" +
"}, 2000)");

请注意,我在注入(inject)变量之前插入了一个超时时间——这是为了防止 chromevox 在我注入(inject)后 被注入(inject),从而使解决方案变得无用。

我知道这是一个丑陋的补丁,但如果不访问 chromium webview 类,我找不到更好的解决方案。

关于android - 辅助功能 : Talkback, WebView 和用户的区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22474086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com