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](https://developer.android.google.cn/static/resources/articles/images/spellcheck_lifecycle.png?authuser=7&hl=pl)
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ę.
- Podklasa klasy
-
- 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ć obiektSpellCheckerService.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, lubonGetSuggestionsMultiple()
, który obsługuje grupy żądań sugestii słów. - Implementacja klastra
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ż TextView
automatycznie korzysta ze sprawdzania pisowni:
![Ilustracja pokazująca automatyczne włączanie sprawdzania pisowni w usłudze EditText](https://developer.android.google.cn/static/images/ui/spellchecker_edittext.png?authuser=7&hl=pl)
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](https://developer.android.google.cn/static/resources/articles/images/spellcheck_client_flow.png?authuser=7&hl=pl)
Przykład sprawdzania pisowni znajdziesz w edytorze metod wprowadzania LatinIME w projekcie Android Open Source.