Android:Comment faire pour éliminer un texte parlé de AccessibilityEvents lors de l'extension de SeekBar?
-
20-12-2019 - |
Question
Mon application Android contient un contrôle de curseur personnalisé basé sur le SeekBar
, et je veux joindre un texte personnalisé phrase pour mon contrôle d'expliquer son utilisation pour l'Accessibilité.
Je l'ai fait avec succès à l'aide de View.setContentDescription(text)
, et TalkBack correctement parle de la phrase quand je demande de se concentrer sur ma curseur de contrôle de Activity.onCreate
.
Pour l'instant, donc bon.Cependant, quand je touche le contrôle, qui, je crois, définit la AccessibilityFocus sur mon Android API 16 appareil de test, mots supplémentaires sont ajoutés à la phrase prononcée, c'est à dire'...chercher à contrôler.0%'.Je veux supprimer ces mots.
J'ai essayé de les éliminer à l'aide de event.getText().clear()
dans View.onInitializeAccessibilityEvent(event)
sans succès.En écho à l'événement pour LogCat rapports de la phrase correcte en event.contentDescription
et pas d'entrées dans event.text
, mais les mots supplémentaires figurent à la fois dans la sortie audio de l'appareil et sur l'écran de débogage texte affiché par Menu->Paramètres->Accessibilité>TalkBack>Paramètres->Paramètres De Développeur->Affichage De La Sortie Vocale.
Svp quelqu'un peut-il suggérer où les mots supplémentaires sont ajoutés, et comment les éliminer?
Toutes les suggestions constructives sont les bienvenues.Merci.
Mise à jour
Je vois que certains d'Explorer Par le Toucher (seul initiale-appuyez sur) l'événement sur mon contrôle personnalisé ne passe pas par son onInitializeAccessibilityEvent
ou dispatchPopulateAccessibilityEvent
les méthodes que je suis délibérément appel event.setContentDescription(null)
.Malgré cela, il y a un AccessibilityEvent
généré avec ma du contrôle personnalisé ContentDescription
, situé dans Activity.onCreate
dans le code, ainsi que les extra mots, je suis d'essayer d'éliminer.
J'ai également mis un AccessibilityDelegate
sur mon contrôle personnalisé du parent ViewGroup
donner de la visibilité à ses onRequestSendAccessibilityEvent
les appels.Cela confirme qu'aucun événement ne contenant mon ContentDescription
est de passage.
C'est très surprenant, et se produit dans les deux l'émulateur et matériel réel avec l'API 16.Des idées?
La solution 2
Je crois que c'est un bug dans la fonction TalkBack, et ont soulevé des Les Yeux de Google-Gratuit question n ° 375, y compris des exemples de code.
Mise à jour: Google a maintenant archivé cette.Lien déménagé: http://code.google.com/archive/p/eyes-free/issues/375
Autres conseils
Vous devez également remplacer http://developer.android.com/reference/android/view/View.html#onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)
et de définir la contentDescription là.
Si vous souhaitez supprimer le 0%, je voudrais essayer de changer la classe dans AccessibilityNodeInfo/AccessibilityEvent:http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)