usar talk sirve quitar que para google descargar desactivar cómo como android accessibility talkback android-accessibility

sirve - ¿Cómo saber si Android TalkBack está activo?



talkback para que sirve (5)

Estoy desarrollando una aplicación que utiliza TalkBack para guiar a las personas a través de ella. Sin embargo, en esas situaciones quiero tener algunas diferencias sutiles en el diseño de la aplicación para que la navegación sea más fácil y también tenga salidas de voz adicionales (con TextToSpeech) para ayudar a guiar al usuario.

Mi problema es que solo quiero esos cambios y salidas adicionales si el usuario tiene TalkBack activo.

¿Hay alguna manera de saber si es? No encontré nada específico para acceder directamente a la configuración de TalkBack, pero esperaba que hubiera alguna forma de acceder a la configuración general del teléfono que me permitiera saber lo que necesito.

Saludos y gracias de antemano.


Abra la configuración del sistema y vaya a accesibilidad y toque para desactivar la opción de respuesta


La forma recomendada de hacerlo es consultar el AccessibilityManager de AccessibilityManager para conocer el estado habilitado de los servicios de accesibilidad.

AccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE); boolean isAccessibilityEnabled = am.isEnabled(); boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled();


Novoda ha lanzado una biblioteca llamada accessibilitools que realiza esta comprobación. Pregunta al administrador de accesibilidad para verificar si hay algún servicio de accesibilidad habilitado que admita el indicador de "comentarios hablados".

AccessibilityServices services = AccessibilityServices.newInstance(context); services.isSpokenFeedbackEnabled();


Para mí, resolví este problema de esta manera, funciona bien en mi proyecto:

  1. use getEnabledAccessibilityServiceList () para obtener todo el servicio de Accesibilidad, un servicio cuyo estado está abierto estará en esta lista
  2. El Talkback contiene una actividad llamada com.android.talkback.TalkBackPreferencesActivity, puede atravesar la lista para encontrar si el servicio de Talkback está abierto

El código detallado a continuación:

private static final String TALKBACK_SETTING_ACTIVITY_NAME = "com.android.talkback.TalkBackPreferencesActivity"; public static boolean accessibilityEnable(Context context) { boolean enable = false; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { try { AccessibilityManager manager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); List<AccessibilityServiceInfo> serviceList = manager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_SPOKEN); for (AccessibilityServiceInfo serviceInfo : serviceList) { String name = serviceInfo.getSettingsActivityName(); if (!TextUtils.isEmpty(name) && name.equals(TALKBACK_SETTING_ACTIVITY_NAME)) { enable = true; } } } catch (Exception e) { if (Logging.isDebugLogging()) { e.printStackTrace(); } } } return enable; }


Para ver un ejemplo, mire isScreenReaderActive() en el archivo HomeLauncher.java en la aplicación de shell Eyes-Free (a través del subproceso de grupos ).

En resumen: detecta todos los lectores de pantalla con Intenciones, luego consulta al proveedor de estado de cada uno para ver si está activo.

Si realmente desea limitarlo solo a TalkBack, puede intentar revisar ResolveInfo.serviceInfo.packageName para cada resultado devuelto por queryIntentServices() para ver si coincide con el paquete TalkBack.