Intereting Posts
Android Studio + Liquid Fun Как исключить модуль из всех зависимостей, но оставить явное объявление Gradle Как центрировать заголовок на панели инструментов (даже при отображении кнопки панели инструментов) Когда край прокрутки просматривается при прокрутке в android Вставить RatingBar в AlertDialog Всплывающее меню Android Custom с переключателем Как сделать TextInputLayout намекнуть звездочку красным на обязательные поля Добавление twitter-kit в проект студии Android Пробел изображения появляется даже после Ellipsize в текстовом элементе Android Автоматический вызов checkbox onCheckedChange при прокрутке списка? Уведомление об обнаружении службы доступности Android Самый простой способ отображения строк со значками в RecyclerView Невозможно удалить изображение в contenteditable div на Android Android Add Native support – неразрешенные jni.h, android / log.h и т. Д. Удалите контур из анкерного элемента на устройстве Android, просматриваемом с помощью Firefox mobile

Доступность: Talkback, WebView и пользовательский язык

Я разработал приложение, которое включает в себя Webview. Я хотел бы сделать мое приложение полностью доступным, поэтому для элемента webview я бы хотел, чтобы TalkBack полностью читал html-элементы, такие как «Заголовок», «Баннер», «Редактировать текст».

Я видел, что процесс TTS в WebView осуществляется через JS-инъекцию через класс Chromium AccessibilityInjector.java. Это вставляет этот скрипт на страницу, на которой есть только сообщения на английском языке. В результате, когда устройство находится на другом языке, TTS считывает этот элемент html на английском языке независимо.

Теперь я не могу отлаживать или расширять веб-клиент хрома, так как я могу заставить TTS читать мою страницу в соответствии с локали пользователя?

EDIT: Кстати, я использую jQuery Mobile.

Solutions Collecting From Web of "Доступность: Talkback, WebView и пользовательский язык"

На всякий случай кто-то сталкивается с этой проблемой: мне пришлось применить уродливое обходное решение, чтобы справиться с этим. Всякий раз, когда я загружаю страницу и включен 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)"); 

Обратите внимание, что я вставляю таймаут перед инъекцией переменных – это значит, что херовекс не вводится после моей инъекции, что делает решение бесполезным.

Я знаю, что это уродливый патч, но я не мог найти лучшего решения без доступа к классам веб-браузера хрома.