Framework für die Rechtschreibprüfung

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:

Bild, das den Lebenszyklus des Rechtschreibprüfungsdienstes zeigt
Abbildung 1: Lebenszyklus des Rechtschreibprüfungsdienstes

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 Klasse Service 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 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 das SpellCheckerService.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, oder onGetSuggestionsMultiple(), das Batches von Wortvorschlagsanfragen verarbeitet.

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:

Bild, das zeigt, wie die Rechtschreibprüfung in EditText automatisch aktiviert wird
Abbildung 2. Rechtschreibprüfung in einem EditText.

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:

Ein Bild, auf dem die Interaktion mit einem Rechtschreibprüfungsdienst zu sehen ist
Abbildung 3: 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.