Android: establece el enfoque de accesibilidad de TalkBack a una vista específica

Cuando TalkBack está habilitado, ¿hay alguna manera de configurar el manual de enfoque de accesibilidad a una vista específica? Por ejemplo, cuando se inicia mi actividad, quiero que TalkBack se enfoque automáticamente en un determinado botón (marco amarillo alrededor de la vista) y lea la descripción de su contenido.

Lo que he probado hasta ahora:

myButton.setFocusable(true); myButton.setFocusableInTouchMode(true); myButton.requestFocus(); 

RequestFocus (), al parecer, sólo está solicitando el enfoque de entrada y no tiene nada que ver con el enfoque de accesibilidad. También he intentado:

  myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED); myButton.announceForAccessibility("accessibility test"); myButton.performAccessibilityAction(64, null); // Equivalent to ACTION_ACCESSIBILITY_FOCUS AccessibilityManager manager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE); if (manager.isEnabled()) { AccessibilityEvent e = AccessibilityEvent.obtain(); e.setSource(myButton); e.setEventType(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); e.setClassName(getClass().getName()); e.setPackageName(getPackageName()); e.getText().add("another accessibility test"); manager.sendAccessibilityEvent(e); } 

Nada de esto parece funcionar.

Exención de responsabilidad: Forzar el foco en la carga de la actividad para estar en cualquier lugar, pero en la barra superior siempre es (bueno, siempre casi nunca se debe decir), pero en realidad, simplemente no lo hagas. Es una violación de todo tipo de regulaciones WCAG 2.0, incluyendo 3.2.1 y 3.2.3, en relación con navegación predecible y cambios de contexto, respectivamente. Probablemente, estás haciendo que tu aplicación sea más inaccesible haciendo esto.

http://www.w3.org/TR/WCAG20/#consistent-behavior

EXENCIÓN DE RESPONSABILIDAD.

Está utilizando las llamadas de función correctas. Todo lo que debe hacer es:

 myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); 

El problema es más probable que el punto en el que su intento de hacer esto. Talkback se adhiere a su actividad un poco más tarde en el ciclo de actividad. La siguiente solución ilustra este problema, no estoy seguro de que haya una mejor manera de hacerlo, para ser honesto. Intenté onPostResume, que es la última llamada de vuelta las llamadas del sistema operativo Android, con respecto a la carga de las actividades, y todavía tuve que añadir en un retraso.

 @Override protected void onPostResume() { super.onPostResume(); Log.wtf(this.getClass().getSimpleName(), "onPostResume"); Runnable task = new Runnable() { @Override public void run() { Button theButton = (Button)WelcomeScreen.this.findViewById(R.id.idButton); theButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); } }; final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); worker.schedule(task, 5, TimeUnit.SECONDS); } 

Es posible que pueda crear una vista personalizada. Las devoluciones de llamada dentro de la vista, puede proporcionar la lógica que necesita para hacer esto, sin la condición de carrera! Podría mirar más tarde si tengo tiempo.

  • Android: evita que TalkBack anuncie el título de TextView en voz alta
  • Cuando utiliza TalkBack, ¿cuál es la forma preferida de alertar al usuario cuando el contenido de un TextView ha cambiado?
  • Cómo cambiar Android Talkback en caso de nombre de la aplicación
  • Prueba de accesibilidad en dispositivos emulados (Marshmallow)
  • Android: evita que TalkBack anuncie el título de TextView en voz alta
  • Android Talkback no lee caracteres utf-8 en la vista Web usando html
  • Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
  • Cómo agregar contentDescription a ListPreference?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.