繁体   English   中英

辅助功能:对讲,WebView和用户的语言环境

[英]Accessibility: Talkback, WebView and user's locale

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

我已经看到WebView中的TTS过程是通过Chromium AccessibilityInjector.java类通过JS注入完成的。 这会将此脚本注入到页面中,该页面仅包含英文消息。 结果是当设备使用另一种语言时,TTS会用英语读取这些html元素。

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

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

万一有人偶然发现这个问题:我不得不应用一个丑陋的解决方法来克服这个问题。 每当我加载页面并启用TalkBack时,我会重新注入包含要读取的文本的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)");

请注意,我在注入变量之前插入超时 - 这是为了防止在注入注入chromevox,从而使解决方案无效。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM