Zugänglichkeit unter Android

Ich muss zugeben, dass ich vor nicht all zu langer Zeit keine Vorstellung davon hatte, wie man ein Smartphone verwenden kann, wenn man blind ist. Die Vorstellung, ein Gerät mit Touchscreen zu benutzen, wenn man nicht sehen kann, was auf dem Display angezeigt wird, erscheint für Sehende im ersten Moment abwegig.

Der Schlüssel dazu ist eine Funktion zur Ansage der Bildelemente, ähnlich wie bei Screenreadern auf PCs. Bei Android wird dafür meist die „TalkBack“-App von Google verwendet. Tippt man ein Element auf dem Display an, liest TalkBack eine Beschreibung des Elementes vor. Um dieses dann auszuwählen (z.B. eine Schaltfläche oder einen Listeneintrag), tippt man zur Bestätigung doppelt auf das Display.

Damit das funktioniert, müssen alle Bildschirmelemente auch eine sinnvolle Beschreibung haben. Bei Menübefehlen oder Schaltflächen mit Text wird die Beschriftung verwendet. Problematisch ist es allerdings bei grafischen Elementen – wenn hier keine separate Beschreibung hinterlegt ist, wird auch nichts sinnvolles mehr angesagt. Auch manche Textelemente mit Symbolen oder Sonderzeichen, die für Sehende keine Schwierigkeiten machen, können bei der Sprachausgabe zu unverständlichen Ergebnisse führen.

Periodical

Diese Erkenntnis und mein Kontakt zu blinden Android-Nutzer/innen war für mich Anlass, meine eigene App „Periodical“ in dieser Richtung genauer zu begutachten. Google hat dazu auch eine Dokumentation. Es ist empfehlenswert, unter realen Bedingungen auf einem echten Gerät mit aktivem „TalkBack“ zu testen,  um die möglichen Probleme bei der Bedienung auch zu erkennen.

Erkannte Probleme

Die Kalenderelemente sind nicht sinnvoll benutzbar.

Zur Darstellung der Kalenderelemente verwende ich eine abgeleitete Klasse, die auf der „Button“-Klasse von Android basiert. Dadurch kann man jeden Kalendertag antippen und die Oberfläche ist auch mit Steuerkreuz und Tastatur bedienbar, sofern das Gerät entsprechende Bedienelemente hat.

Das Problem dabei: Die Klasse zeigt zusätzlich zu einem Text für den aktuellen Tag des Monats auch weitere Informationen an, von denen ein Screenreader aber nichts mitbekommt. Tippt man einen Tag an, erhält man lediglich die wenig hilfreiche Ansage „5, Schaltfläche“ oder „12, Schaltfläche“. Dass diese Tage zusätzlich gelb oder blau dargestellt werden, um unfruchtbare oder fruchtbare Tage anzuzeigen, oder dass neben der Zahl auch ein Symbol erscheint, mit dem „Beginn der Periode“ signalisiert wird, ist für Blinde nicht erkennbar.

Elemente sind unverständlich

Am oberen Rand des Kalenders (oder im Querformat am rechten Rand) werden der aktuelle Monat, das aktuelle Jahr sowie die durchschnittliche, minimale und maximale Dauer eines Zyklus angezeigt. Bei der Sprachausgabe erhält man aber nur einen Text in der Art wie „Oktober 2014, 25, 23, 28“. Was die drei Zahlen am Ende genau bedeuten, erschließt sich nicht, da die Symbole für „Durchschnitt“, „Minimum“ und „Maximum“ in der Sprachausgabe ignoriert werden.

Auch die beiden Schaltflächen für den Wechsel des angezeigten Monats sind nicht optimal. Dort werden die Zeichen „<” und „>” verwendet, was rein visuell nachvollziehbar ist, in der Sprachausgabe aber nur zu „kleiner, Schaltfläche“ und „größer, Schaltfläche“ führt. Welche Funktion sich dahinter verbirgt, ist nicht direkt nachvollziehbar.

Schließlich ist auch die abgekürzte Beschriftung der Wochentage verbesserungswürdig. Beschriftungen wie „MO“, „DI“ oder „MI“ mögen zwar grundsätzlich ausreichen, um optisch zu erkennen, was gemeint ist, aber als Ansage ist ein vollständiger Text, wie „Montag“ hilfreicher.

Eine Lösung: beschreibende Texte mit „Content Description“

Um die genannten Probleme zu lösen, muss man als Entwickler gar nicht so viel tun. Android unterstützt für alle GUI-Elemente eine „Content Description“, die sowohl als Teil des Layout fest vorgegeben, als auch zur Laufzeit nachträglich erzeugt oder geändert werden kann.

In einem Layout kann man dies z.B. wie folgt umsetzen, hier am Beispiel einer Beschriftung:

<TextView
  android:text="@string/text_label"
  android:contentDescription="@string/text_description"
  android:gravity="center"
  android:layout_height="fill_parent"
  android:textStyle="bold" />

In diesem Beispiel gibt android:text den Text an, der sichtbar angezeigt wird. Mit android:contentDescription wird dagegen der Text angegeben, der von TalkBack angesagt wird, wenn man das Element auf dem Display berührt.

Dies habe ich genutzt, um die statischen Beschriftungen für die Wochentage mit längeren Texten zu versehen. Wenn man „MO“ mit aktivem TalkBack auf dem Display antippt, wird „Montag“ angesagt.

Bei anderen Elementen, deren Inhalt sich erst zur Laufzeit ergibt, nutze ich die Methode setContentDescription(), um die Beschreibung dynamisch anzupassen.

Der Aufwand für diese Erweiterungen ist nicht sehr hoch, macht aber für Menschen, die auf eine Unterstützung per Sprachausgabe angewiesen den Unterschied zwischen „unbenutzbar“ und „brauchbar“.

Eine entsprechend erweiterte Version von Periodical gibt es bereits auf Github, ist aber noch im Test und wartet auf die Rückmeldung echter Nutzer/innen, bevor es eine offizielle Veröffentlichung auf F-Droid und im Google Play Store gibt.

Update 2014-10-27: Mittlerweile wurde die angepasste Version freigegeben.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.