Android:Wie kann ich gesprochenen Text aus AccessibilityEvents entfernen, wenn ich SeekBar erweitere?

StackOverflow https://stackoverflow.com//questions/25001069

Frage

Meine Android-App enthält ein benutzerdefiniertes Schieberegler-Steuerelement, das auf dem basiert SeekBar, und ich möchte meinem Steuerelement eine benutzerdefinierte Textphrase hinzufügen, um dessen Verwendung für Barrierefreiheit zu erläutern.

Ich habe dies erfolgreich mit durchgeführt View.setContentDescription(text), und TalkBack spricht den Satz korrekt aus, wenn ich den Fokus auf mein Schieberegler-Steuerelement anfordere Activity.onCreate.

So weit, ist es gut.Wenn ich jedoch das Steuerelement berühre, das meiner Meinung nach den AccessibilityFocus auf meinem Android API 16-Testgerät festlegt, werden der gesprochenen Phrase zusätzliche Wörter hinzugefügt, d. h.„… Kontrolle suchen.“0 Prozent‘.Ich möchte diese zusätzlichen Wörter entfernen.

Ich habe versucht, sie mit zu beseitigen event.getText().clear() In View.onInitializeAccessibilityEvent(event) ohne Erfolg.Durch das Echo des Ereignisses an LogCat wird der korrekte Ausdruck gemeldet event.contentDescription und keine Einträge in event.text, aber die zusätzlichen Wörter erscheinen sowohl in der Audioausgabe der Gerätehardware als auch im Debug-Text auf dem Bildschirm, der von angezeigt wird Menü->Einstellungen->Eingabehilfen->TalkBack->Einstellungen->Entwicklereinstellungen->Sprachausgabe anzeigen.

Kann mir bitte jemand vorschlagen, wo die zusätzlichen Wörter hinzugefügt werden und wie man sie entfernt?

Alle konstruktiven Vorschläge wären willkommen.Danke.

Aktualisieren

Ich kann sehen, dass einige „Explore By Touch“-Ereignisse (anfängliches einmaliges Tippen) in meinem benutzerdefinierten Steuerelement nicht durch eines der beiden gesteuert werden onInitializeAccessibilityEvent oder dispatchPopulateAccessibilityEvent Methoden, wie ich sie bewusst nenne event.setContentDescription(null).Trotzdem gibt es eine AccessibilityEvent wird mit meinen benutzerdefinierten Steuerelementen generiert ContentDescription, eingesetzt Activity.onCreate im Code, plus die zusätzlichen Wörter, die ich entfernen möchte.

Ich habe auch eine eingestellt AccessibilityDelegate auf dem übergeordneten Element meines benutzerdefinierten Steuerelements ViewGroup um es sichtbar zu machen onRequestSendAccessibilityEvent Anrufe.Dies bestätigt, dass kein Ereignis meine enthält ContentDescription ist auf der Durchreise.

Das ist sehr rätselhaft und passiert sowohl auf dem Emulator als auch auf echter Hardware mit API 16.Irgendwelche Ideen?

War es hilfreich?

Lösung 2

Ich glaube, dass dies ein Fehler in TalkBack ist, und habe ihn gemeldet Google Eyes-Free-Problem Nr. 375, inklusive Beispielcode.

Aktualisieren: Google hat dies nun archiviert.Link verschoben nach: http://code.google.com/archive/p/eyes-free/issues/375

Andere Tipps

Sie müssen auch überschreiben http://developer.android.com/reference/android/view/View.html#onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)

und legen Sie dort die contentDescription fest.

Wenn Sie die 0 % entfernen möchten, würde ich versuchen, die Klasse in AccessibilityNodeInfo/AccessibilityEvent zu ändern:http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top