Was ist bei Verwendung von TalkBack der bevorzugte Weg, um den Benutzer zu warnen, wenn sich der Inhalt einer TextView geändert hat?

7

Ich habe einen Entsperrbildschirm, auf dem der Benutzer aufgefordert wird, einen vierstelligen Pin einzugeben. Wenn der Benutzer seinen Pin falsch eingibt, wird eine zuvor unsichtbare TextView mit einer Fehlermeldung angezeigt. An dieser Stelle wäre es sinnvoll, dass TalkBack den Inhalt der Fehlermeldung laut liest.

Durch einige Experimente wurde mir klar, dass ich android:focusableInTouchMode="true" auf die Ansicht setzen und programmatisch View#requestFocus() . Dies funktioniert das erste Mal, scheitert jedoch bei nachfolgenden Fehlern, da die Ansicht bereits fokussiert ist. Außerdem scheint es generell eine schlechte Idee zu sein, den aktuellen Ansichtsfokus zu überschreiben.

Ich habe dann versucht, View#announceForAccessibility(java.lang.CharSequence) aufzurufen wenn die Fehlermeldung angezeigt wird. Anscheinend wird diese Methode stillschweigend fehlschlagen , wenn die Ansicht momentan nicht sichtbar ist. Kein Problem und ansonsten funktioniert es perfekt. Allerdings ist es nur in API-Level 16+ (Jelly Bean) verfügbar, was seine Nützlichkeit wirklich einschränkt. Es muss eine bessere Lösung geben, da TalkBack API Level 7 + unterstützt.

Ich habe die Google I / O-Sitzungen 2011 und 2012 zur Barrierefreiheit gesehen, aber beide scheinen diesen grundlegenden Anwendungsfall nicht zu erfassen. Was ist der beste Weg, dies zu tun?

Bearbeiten 1: TLDR; Gibt es eine Möglichkeit, erzwingen TalkBack, etwas Text vor der Einführung von View#announceForAccessibility(java.lang.CharSequence) in Jelly Bean zu lesen?

    
twaddington 03.11.2012, 02:48
quelle

5 Antworten

10

Sie können View.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED) auf Ihrem TextView verwenden, um TalkBack auf die gleiche Weise wie View.requestFocus() auszulösen. Da es nur das Ereignis auslöst und die Ansicht nicht wirklich fokussiert, sollte es nicht nach dem ersten Mal abstürzen.

    
Techwolf 09.11.2012, 06:20
quelle
8

Ich habe die akzeptierte Antwort verwendet, die gut funktioniert. Allerdings mochte ich das irreführende Geräusch nicht, wenn der Fokus der Eingabehilfen auf die Textansicht eingestellt war - der gleiche Klang wie bei der Eingabe von Fokus auf ein EditField durch zweimaliges Antippen (eine Art Schublade-Open-Sound), weil der Eingabefokus war nicht wirklich aus dem EditText mit Eingabefokus (zB mit dem Cursor) verschoben.

Also habe ich es versucht:

%Vor%

und interessanterweise funktioniert es - das Etikett wird gelesen, ohne Fokus zu bewegen oder irgendeinen anderen Ton zu geben.

    
salfon 14.05.2013 18:48
quelle
1

OK, wenn Sie L oder später verwenden, ist die bessere Antwort: Ссылка

Dies wird die ganze Arbeit für Sie erledigen.

    
Kristian 29.10.2014 21:09
quelle
1

Ein anderer Weg wäre, wenn TalkBack aktiviert ist, zusätzlich eine Toast-Nachricht mit dem Fehlertext anzuzeigen. Dies wird auch laut vorgelesen.

    
sebastian 07.05.2015 12:21
quelle
0

Empfohlen wird, den folgenden Code nach der Änderung der Textansicht zu verwenden.

%Vor%

Es wird den Inhalt lesen, ohne sich darauf zu konzentrieren.

    
vijesh 29.12.2016 10:06
quelle

Tags und Links