Accesibilidad: Talkback, WebView y configuración regional del usuario

He desarrollado una aplicación que incluye una vista Web. Me gustaría hacer que mi aplicación sea totalmente accesible, por lo que para el elemento webview me gustaría que TalkBack leyera elementos html como "Título", "Banner", "EditText" de una manera totalmente accesible.

He visto que el proceso TTS en WebView se realiza a través de inyección de JS a través de la clase AccessibilityInjector.java de Chromium. Esto inyecta esta secuencia de comandos en la página, que sólo tiene los mensajes en inglés. El resultado es que cuando un dispositivo está en otro idioma, el TTS lee estos elementos html en inglés sin importar.

Ahora no puedo depurar o extender el webclient de cromo, así que ¿cómo puedo hacer TTS para leer mi página de acuerdo con la configuración regional del usuario?

EDIT: Estoy utilizando jQuery Mobile por cierto.

Por si alguien tropieza con este problema: tuve que aplicar una solución fea para superar esto. Cada vez que carga una página y TalkBack está habilitado, reinyecto las variables de javascript que contienen el texto a leer, con sus contrapartes localizadas. Por ejemplo, para el texto en español:

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)"); 

Tenga en cuenta que insertar un tiempo de espera antes de inyectar las variables – esto es para evitar que chromevox de ser inyectado después de mi inyección por lo que la solución inútil.

Sé que este es un parche feo, pero no pude encontrar mejores soluciones sin acceso a las clases de cromo webview.

  • Abrir PDF en WebView con un tamaño de archivo superior a 1 MB
  • Webview con pantalla completa en android
  • Android - Cómo hacer una llamada telefónica desde webview
  • Cómo obtener la posición del documento en un WebView?
  • Modificar el título de la alerta () (Javascript en la vista Web de Android)
  • WebView - WebPage no disponible
  • Habilitar el zoom en WebView android
  • Añadir encabezados personalizados desde android webview
  • El mejor enfoque para pasar datos desde la vista web a la aplicación nativa (Windows, iOS y Android)
  • Android WebView añadiendo extraño espacio vacío en la parte inferior
  • ¿Por qué está desfasado el LayoutAlgorithm.SINGLE_COLUMN de WebView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.