¿Cómo puedo modificar la sugerencia de uso de TalkBack para una vista que se puede hacer clic en Android?

De forma predeterminada, las vistas que se pueden hacer clic en Android se renderizarán con una sugerencia de uso que se leerá en voz alta (si TalkBack está habilitado y el usuario se centra en esa vista) después de la descripción del contenido:

"Tocar dos veces para activar"

¿Puedo cambiar esto para que lea algo menos abstracto y más específico de mi aplicación? Me gusta:

"Toque dos veces para reproducir el video"

Sí, esto es absolutamente posible!

Anulación del método onInitializeAccessibilityNodeInfo

Si tiene una vista personalizada, puede sobrescribir el onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) y agregar una acción con ACTION_CLICK ID, para reemplazar la etiqueta:

 @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); info.addAction( new AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.ACTION_CLICK, "play video" ) ); } 

Si esa vista tiene un oyente de clics, a continuación, agregando esta Action nueva, habrá reemplazado la etiqueta predeterminada para que TalkBack diga "toque dos veces en".

Esto solo está disponible en la API 21 – ¿qué pasaría si quisieras algo que funcionara en una versión de API más baja o quisieras establecer una sugerencia de uso personalizada en una Vista no personalizada? Puede utilizar ViewCompat y AccessibilityDelegateCompat !

Utilizar un AccessibilityDelegate en su lugar

Es muy similar – puede anular el método equivalente en un AccessibilityDelegate personalizado que se extiende:

 public static class PlayVideoAccessibilityDelegate extends AccessibilityDelegateCompat { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { super.onInitializeAccessibilityNodeInfo(host, info); info.addAction( new AccessibilityNodeInfoCompat.AccessibilityActionCompat( AccessibilityNodeInfoCompat.ACTION_CLICK, "play video" ) ); } } 

A continuación, para utilizarlo, establezca el delegado con ViewCompat :

 ViewCompat.setAccessibilityDelegate(playButton, new PlayVideoAccessibilityDelegate()); 

Uso de accessibilitools

Novoda tiene una biblioteca de utilidades para ayudar con la accesibilidad en Android. Esto incluye algunas herramientas para ayudar a establecer consejos de uso:

 UsageHintsAccessibilityDelegate delegate = new UsageHintsAccessibilityDelegate(resources); delegate.setClickLabel("play video"); ViewCompat.setAccesibilityDelegate(playButton, delegate); 

Escribí un blogpost que es una visión general de accessibilitools (también soy colaborador de la biblioteca).

  • Personalizar Android Talkback en diálogo de alerta?
  • Cómo cambiar Android Talkback en caso de nombre de la aplicación
  • Prueba de accesibilidad (talkback) para la aplicación
  • Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
  • Acceso total al tacto a pesar de TalkBack / lector de pantalla
  • Android: ¿Cómo forzar Explore-By-Touch / Talkback para repetir la ContentDescription de la vista actual en AccessibilityFocus?
  • Función de conversación de RecyclerView no bien
  • ¿Hay una manera estándar de sugerir que un número debe ser leído un carácter a la vez?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.