Die Android-Plattform bietet ein Framework für die Rechtschreibprüfung, mit dem Sie die Rechtschreibprüfung in Ihrer App implementieren und darauf zugreifen können. Das Framework ist eine der Text Service APIs.
Um das Framework in Ihrer App zu verwenden, erstellen Sie einen Android-Dienst, der ein session-Objekt für die Rechtschreibprüfung generiert. Auf Grundlage des von Ihnen eingegebenen Textes gibt das Sitzungsobjekt von der Rechtschreibprüfung generierte Rechtschreibvorschläge zurück.
Lebenszyklus der Rechtschreibprüfung
Das folgende Diagramm zeigt den Lebenszyklus der Rechtschreibprüfung:
Die Anwendung beginnt mit der Implementierung des Rechtschreibprüfungsdienstes, um die Rechtschreibprüfung zu starten. Clients in Ihrer App, z. B. Aktivitäten oder einzelne UI-Elemente, fordern beim Dienst eine Sitzung mit der Rechtschreibprüfung an und nutzen diese Sitzung, um Textvorschläge zu erhalten. Wenn ein Client seinen Vorgang beendet, wird auch die Rechtschreibprüfungssitzung geschlossen. Falls erforderlich, kann die Anwendung die Rechtschreibprüfung jederzeit beenden.
Rechtschreibprüfung implementieren
Wenn Sie das Framework für die Rechtschreibprüfung in Ihrer App verwenden möchten, fügen Sie eine Dienstkomponente für die Rechtschreibprüfung hinzu, die die Sitzungsobjektdefinition enthält. Sie können Ihrer App auch eine optionale Aktivität hinzufügen, die die Einstellungen steuert. Fügen Sie eine XML-Metadatendatei hinzu, in der die Rechtschreibprüfung beschrieben wird, und fügen Sie der Manifestdatei die entsprechenden Elemente hinzu.
Rechtschreibprüfungsklassen
Definieren Sie den Dienst und das Sitzungsobjekt mit den folgenden Klassen:
-
- Eine abgeleitete Klasse von
SpellCheckerService
- Der
SpellCheckerService
implementiert sowohl die KlasseService
als auch die Framework-Oberfläche der Rechtschreibprüfung. Implementieren Sie innerhalb Ihrer Unterklasse die folgende Methode:createSession()
- Eine Fabrikmethode, die ein
SpellCheckerService.Session
-Objekt an einen Client zurückgibt, der die Rechtschreibung prüfen möchte.
- Eine abgeleitete Klasse von
-
- Eine Implementierung von
SpellCheckerService.Session
- Ein Objekt, das die Rechtschreibprüfung für Clients bereitstellt, damit diese Text an die Rechtschreibprüfung weitergeben und Vorschläge erhalten können. Implementieren Sie innerhalb dieser Klasse die folgenden Methoden:
onCreate()
- Wird vom System als Reaktion auf
createSession()
aufgerufen. Bei dieser Methode können Sie dasSpellCheckerService.Session
-Objekt anhand der aktuellen Sprache und anderer Details initialisieren. onGetSentenceSuggestionsMultiple()
- Die eigentliche Rechtschreibprüfung wird durchgeführt. Diese Methode gibt ein Array von
SentenceSuggestionsInfo
zurück, das Vorschläge für die an sie übergebenen Sätze enthält.
Optional kannst du
onCancel()
implementieren, das Anfragen zum Abbrechen der Rechtschreibprüfung verarbeitet,onGetSuggestions()
, das eine Anfrage für Wortvorschläge verarbeitet, oderonGetSuggestionsMultiple()
, das Batches von Wortvorschlagsanfragen verarbeitet. - Eine Implementierung von
Manifest und Metadaten der Rechtschreibprüfung
Gib neben dem Code die entsprechende Manifestdatei und eine Metadatendatei für die Rechtschreibprüfung an.
Die Manifestdatei definiert die App, den Dienst und die Aktivität zum Steuern der Einstellungen, wie im folgenden Beispiel gezeigt:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.samplespellcheckerservice" > <application android:label="@string/app_name" > <service android:label="@string/app_name" android:name=".SampleSpellCheckerService" android:permission="android.permission.BIND_TEXT_SERVICE" > <intent-filter > <action android:name="android.service.textservice.SpellCheckerService" /> </intent-filter> <meta-data android:name="android.view.textservice.scs" android:resource="@xml/spellchecker" /> </service> <activity android:label="@string/sample_settings" android:name="SpellCheckerSettingsActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> </application> </manifest>
Komponenten, die den Dienst verwenden möchten, müssen die Berechtigung BIND_TEXT_SERVICE
anfordern, damit nur das System an den Dienst gebunden wird. In der Definition des Dienstes wird auch die Metadatendatei spellchecker.xml
angegeben, die im nächsten Abschnitt beschrieben wird.
Die Metadatendatei spellchecker.xml
enthält den folgenden XML-Code:
<spell-checker xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/spellchecker_name" android:settingsActivity="com.example.SpellCheckerSettingsActivity"> <subtype android:label="@string/subtype_generic" android:subtypeLocale="en” /> <subtype android:label="@string/subtype_generic" android:subtypeLocale="fr” /> </spell-checker>
Die Metadaten geben die Aktivität an, mit der die Rechtschreibprüfung die Einstellungen steuert. Außerdem definiert sie Untertypen für die Rechtschreibprüfung. In diesem Fall definieren die Untertypen die Sprachen, die die Rechtschreibprüfung verarbeiten kann.
Über einen Client auf die Rechtschreibprüfung zugreifen
Apps, die die Ansichten TextView
und EditText
nutzen, profitieren automatisch von der Rechtschreibprüfung, da TextView
automatisch eine Rechtschreibprüfung verwendet:
In anderen Fällen kann es jedoch sinnvoll sein, direkt mit einem Rechtschreibprüfungsdienst zu interagieren. Das folgende Diagramm zeigt den Steuerungsablauf für die Interaktion mit einem Rechtschreibprüfungsdienst:
Der Editor für lateinamerikanische Eingabemethoden im Android Open Source-Projekt enthält ein Beispiel für die Rechtschreibprüfung.