Androide:¿Cómo eliminar el texto hablado de AccessibilityEvents al extender SeekBar?
-
20-12-2019 - |
Pregunta
Mi aplicación de Android contiene un control deslizante personalizado basado en el SeekBar
, y quiero adjuntar una frase de texto personalizada a mi control para explicar su uso para Accesibilidad.
He hecho esto exitosamente usando View.setContentDescription(text)
, y TalkBack dice correctamente la frase cuando solicito centrarse en mi control deslizante desde Activity.onCreate
.
Hasta ahora, todo bien.Sin embargo, cuando toco el control, que creo que establece AccessibilityFocus en mi dispositivo de prueba Android API 16, se agregan palabras adicionales a la frase hablada, es decir.'...busca el control.0 por ciento'.Quiero eliminar estas palabras adicionales.
He intentado eliminarlos usando event.getText().clear()
en View.onInitializeAccessibilityEvent(event)
sin éxito.Hacer eco del evento en LogCat informa la frase correcta en event.contentDescription
y no hay entradas en event.text
, pero las palabras adicionales aparecen tanto en la salida de audio del hardware del dispositivo como en el texto de depuración en pantalla mostrado por Menú->Configuración->Accesibilidad->TalkBack->Configuración->Configuración de desarrollador->Mostrar salida de voz.
¿Alguien puede sugerir dónde se agregan las palabras adicionales y cómo eliminarlas?
Cualquier sugerencia constructiva será bienvenida.Gracias.
Actualizar
Puedo ver que algún evento de Exploración táctil (un solo toque inicial) en mi control personalizado no pasa por ninguno de sus onInitializeAccessibilityEvent
o dispatchPopulateAccessibilityEvent
métodos como estoy llamando deliberadamente event.setContentDescription(null)
.A pesar de esto, existe una AccessibilityEvent
siendo generado con mis controles personalizados ContentDescription
, establecer en Activity.onCreate
en el código, además de las palabras adicionales que estoy tratando de eliminar.
También he configurado un AccessibilityDelegate
en el padre de mi control personalizado ViewGroup
para dar visibilidad a su onRequestSendAccessibilityEvent
llamadas.Esto confirma que ningún evento que contenga mi ContentDescription
está de paso.
Esto es muy desconcertante y sucede tanto en el emulador como en el hardware real con API 16.¿Algunas ideas?
Solución 2
Creo que esto es un error en TalkBack y he planteado Número 375 de Google Eyes-Free, incluido el código de ejemplo.
Actualizar: Google ahora ha archivado esto.Enlace movido a: http://code.google.com/archive/p/eyes-free/issues/375
Otros consejos
También necesitas anular http://developer.android.com/reference/android/view/View.html#onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)
y establezca la descripción del contenido allí.
Si desea eliminar el 0%, intentaría cambiar la clase en AccessibilityNodeInfo/AccessibilityEvent:http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)