Narzędzie sprawdzania pisowni

Platforma Androida oferuje mechanizm sprawdzania pisowni, który umożliwia implementowanie sprawdzania pisowni w aplikacji i uzyskiwanie do niego dostępu. Jest to jeden z interfejsów API usługi tekstowej.

Aby użyć tej platformy w aplikacji, musisz utworzyć usługę na Androida, która będzie generować obiekt session sprawdzania pisowni. Na podstawie wpisanego tekstu obiekt sesji zwraca sugestie pisowni wygenerowane przez moduł sprawdzania pisowni.

Cykl życia sprawdzania pisowni

Poniższy diagram przedstawia cykl życia usługi sprawdzania pisowni:

Obraz przedstawiający cykl życia usługi sprawdzania pisowni
Rysunek 1. Cykl życia usługi sprawdzania pisowni.

Aby zainicjować sprawdzanie pisowni, aplikacja rozpoczyna implementację usługi sprawdzania pisowni. Klienty aplikacji, np. działania lub poszczególne elementy interfejsu, wysyłają do usługi żądanie sesji sprawdzania pisowni, a następnie korzystają z tej sesji do uzyskiwania sugestii dotyczących tekstu. Gdy klient kończy działanie, zamyka sesję sprawdzania pisowni. W razie potrzeby aplikacja może w każdej chwili wyłączyć sprawdzanie pisowni.

Wdrażanie usługi sprawdzania pisowni

Aby korzystać w aplikacji ze platformy sprawdzania pisowni, dodaj komponent usługi sprawdzania pisowni, który zawiera definicję obiektu sesji. Możesz też dodać do aplikacji opcjonalne działanie, które kontroluje ustawienia. Dodaj plik XML metadanych opisujący usługę sprawdzania pisowni i dodaj odpowiednie elementy do pliku manifestu.

Zajęcia sprawdzania pisowni

Zdefiniuj usługę i obiekt sesji za pomocą tych klas:

  • Podklasa klasy SpellCheckerService
    SpellCheckerService implementuje zarówno klasę Service, jak i interfejs platformy sprawdzania pisowni. W podklasie zaimplementuj tę metodę:
    createSession()
    Metoda fabryczna, która zwraca obiekt SpellCheckerService.Session klientowi, który chce sprawdzić pisownię.
  • Implementacja klastra SpellCheckerService.Session
    Obiekt udostępniany przez usługę sprawdzania pisowni klientom, aby umożliwić im przekazywanie tekstu do modułu sprawdzania pisowni i otrzymywanie sugestii. W tej klasie zaimplementuj te metody:
    onCreate()
    Wywoływane przez system w odpowiedzi na żądanie createSession(). W tej metodzie możesz zainicjować obiekt SpellCheckerService.Session na podstawie bieżącego języka i innych szczegółów.
    onGetSentenceSuggestionsMultiple()
    Przeprowadza faktyczne sprawdzanie pisowni. Ta metoda zwraca tablicę SentenceSuggestionsInfo zawierającą sugestie dla przekazanych do niej zdań.

    Opcjonalnie możesz wdrożyć onCancel(), który obsługuje żądania anulowania sprawdzania pisowni, onGetSuggestions(), który obsługuje żądania sugestii słów, lub onGetSuggestionsMultiple(), który obsługuje grupy żądań sugestii słów.

Plik manifestu i metadane narzędzia do sprawdzania pisowni

Oprócz kodu przekaż odpowiedni plik manifestu i plik metadanych na potrzeby sprawdzania pisowni.

Plik manifestu określa aplikację, usługę i aktywność potrzebną do kontrolowania ustawień, jak w tym przykładzie:

<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>

Komponenty, które mają korzystać z usługi, muszą prosić o uprawnienia BIND_TEXT_SERVICE, aby mieć pewność, że tylko system będzie mógł powiązać z usługą. Definicja usługi określa też plik metadanych spellchecker.xml, który został opisany w następnej sekcji.

Plik metadanych spellchecker.xml zawiera ten plik XML:

<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>

Metadane określają aktywność, której moduł sprawdzania pisowni używa do kontrolowania ustawień. Definiuje także podtypy sprawdzania pisowni. W tym przypadku podtypy definiują języki, które może obsłużyć moduł sprawdzania pisowni.

Uzyskiwanie dostępu do usługi sprawdzania pisowni z poziomu klienta

aplikacje korzystające z widoków danych TextView i EditText automatycznie korzystają z sprawdzania pisowni, ponieważ TextViewautomatycznie korzysta ze sprawdzania pisowni:

Ilustracja pokazująca automatyczne włączanie sprawdzania pisowni w usłudze EditText
Rysunek 2. Sprawdzanie pisowni w EditText.

W innych przypadkach możesz jednak skorzystać z bezpośredniej usługi sprawdzania pisowni. Poniższy diagram przedstawia przepływ kontroli podczas interakcji z usługą sprawdzania pisowni:

Schemat pokazujący interakcję z usługą sprawdzania pisowni
Rysunek 3. Interakcja z usługą sprawdzania pisowni.

Przykład sprawdzania pisowni znajdziesz w edytorze metod wprowadzania LatinIME w projekcie Android Open Source.