Android User Navigation (Vorschau)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Devcorner<br />
Dasher, Teil II<br />
großen Buchstaben (und umgekehrt) ermöglicht.<br />
Solange der Service aktiv ist, wird diese<br />
Methode beim nächsten Öffnen einer Target-<br />
Applikation nicht mehr aufgerufen, sondern<br />
nur noch die Methode<br />
onStartInputView(EditorInfo, boolean). In<br />
Letzterer wird der Dasher-Raum-Auschnitt,<br />
der am Bildschirm gezeigt werden soll, dem<br />
gegenwärtigen Text und der Cursor-Position<br />
im aktuell angeklickten EditText-Feld angepasst<br />
und gezeichnet.<br />
Sobald Dasher nicht mehr im Fokus ist,<br />
zum Beispiel wenn der Knopf Back gedrückt<br />
wird, wird die Methode<br />
onFinishInputView(boolean finishingInput)<br />
aktiv. Hier schließen wir die Dasher-Datenbank.<br />
Wir rufen hier auch die Methode der<br />
super-Klasse auf, damit die aktuelle Cursor-<br />
Position beim Verlassen des Editors erhalten<br />
bleibt. Das <strong>Android</strong>-Framework garantiert,<br />
dass das aktuelle Bild beim Drehen des Telefons<br />
korrekt dargestellt wird, indem das<br />
InputView-Objekt anhand der neuen Bildschirmmasse<br />
neu rekonstruiert wird. In unserem<br />
Fall haben wir die surface-<br />
Changed(...)-Methode so implementiert,<br />
dass in der Längs- ein größerer Dasher-Raum<br />
Ausschnitt als in der Porträt-Konfiguration<br />
sichtbar ist.<br />
Dasher Service laden<br />
Ein InputMethodService ist bekanntlich<br />
keine Aktivität. Deshalb bedienen wir uns<br />
der PrefenceActivity als Startklasse unseres<br />
Dasher-Service. Darin werden einige Dasher-<br />
Optionen zur Wahl angeboten; vor allem<br />
wird aber die Dasher SQLite Datenbank aufs<br />
Gerät geladen. Listing 5 zeigt einen<br />
Ausschnitt der Datei <strong>Android</strong>Manifest.xml,<br />
der Dasher als ein InputMethodService<br />
deklariert.<br />
Viele <strong>Android</strong>-Geräte beinhalten eine SD-<br />
Karte, die zusätzlichen Flash-Speicher zur<br />
Verfügung stellt. Diese Karte enthält viel<br />
mehr Speicherplatz als das im Handy eingebaute<br />
RAM und ist darum ideal zum Speichern<br />
von Datenbanken. Unser PPM-4 basiertes<br />
Prediction-Modell, das mit einem für<br />
Listing 5: Dasher als Input-Service<br />
die englische Sprache repräsentativen Text<br />
trainiert wurde, beansprucht in der SQLite<br />
Datenbank etwa 4.86 MB. Damit das Trainieren<br />
mit beliebigen Texten auf dem Handy<br />
möglich wird, muss Dasher neue Datenbankeinträge<br />
auf der SD-Karte speichern können.<br />
Dafür sollte ab <strong>Android</strong> 1.6 in der <strong>Android</strong>Manifest-Datei<br />
die folgende Erlaubnis stehen:<br />
. Sowohl<br />
die Datenbank, als auch die binäre<br />
Datei LatinAlphabet.dac sollten aufs Handy<br />
geladen werden. Letztere enthält sowohl eine<br />
Liste der von Dasher erkannten Buchstaben<br />
und die entsprechenden Zeichen für Kleinund<br />
Großbuchstaben als auch die für das jewilige<br />
Symbolquadrat verwendete Farbe. Da<br />
XML-Parsing auf <strong>Android</strong> umständlich und<br />
langsam ist, wurde diese Datei zwar zuerst<br />
in XML geschrieben, aber mithilfe des Java-<br />
Hilfsprogramms in ein binäres Format umgewandelt.<br />
Fazit<br />
Unser Dasher ist nahtlos im <strong>Android</strong>-Programmierungsmodell<br />
integriert, was man<br />
nicht von der Version von Snowton [3] behaupten<br />
kann. Da die Sprachmodell-Datenbank<br />
auf der SD-Karte gespeichert wird, beansprucht<br />
unsere Dasher-Implementation<br />
ungefähr 9 MByte weniger Speicherplatz auf<br />
dem Heap als die Referenz-Implementation<br />
[3]. Unsere Dasher-Applikation wurde mit<br />
<strong>Android</strong> 2.3.3 und auf einem Google S Nexus<br />
getestet. Der gesamte Quellcode ist unter<br />
einer GPL-Lizenz frei erhältlich [4]. ● ● ●<br />
<br />
<br />
<br />
<br />
<br />
<br />
Infos<br />
[1] Adaptive Computer Interfaces,<br />
David J. Ward, PhD<br />
Thesis, 2001: http:// www.<br />
inference. phy. cam. ac. uk/<br />
djw30/ papers/ thesis. pdf<br />
[2] Lebenszyklusschema eines<br />
Input Method Service: http://<br />
android‐developers.<br />
blogspot. com/ 2009/ 04/<br />
creating‐input‐method. html<br />
[3] Das Dasher Projekt: http://<br />
www. inference. phy. cam. ac.<br />
uk/ dasher/<br />
[4] Quellcode für die FHNW-Implementation<br />
von Dasher:<br />
http:// www. fhnw. ch/<br />
personen/ carlo‐nicola/<br />
dasher<br />
[5] Teil 1 zum Workshop finden<br />
Sie auf der Heft-CD, in <strong>Android</strong><br />
<strong>User</strong> 01/2012 und online<br />
unter http:// www.<br />
android‐user. de/ Magazin/<br />
Archiv/ 2012/ 01/ Dasher‐fuer‐<br />
<strong>Android</strong>‐implementieren/<br />
<strong>Android</strong>-user.de März 2012 113