25.02.2014 Aufrufe

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!