Платформа Android предлагает платформу проверки орфографии, которая позволяет реализовать проверку орфографии и получить к ней доступ в вашем приложении. Платформа является одним из API текстовых служб.
Чтобы использовать платформу в своем приложении, вы создаете службу Android, которая генерирует объект сеанса проверки правописания. На основе предоставленного вами текста объект сеанса возвращает предложения по написанию, созданные программой проверки орфографии.
Жизненный цикл проверки орфографии
На следующей диаграмме показан жизненный цикл службы проверки орфографии:
![Изображение, показывающее жизненный цикл службы проверки орфографии.](https://developer.android.google.cn/static/resources/articles/images/spellcheck_lifecycle.png?hl=ru)
Чтобы начать проверку орфографии, ваше приложение запускает реализацию службы проверки орфографии. Клиенты в вашем приложении, такие как действия или отдельные элементы пользовательского интерфейса, запрашивают у службы сеанс проверки орфографии, а затем используют этот сеанс для получения предложений по тексту. Когда клиент завершает свою работу, он закрывает сеанс проверки орфографии. При необходимости ваше приложение может в любой момент отключить службу проверки правописания.
Внедрить службу проверки правописания
Чтобы использовать платформу проверки орфографии в своем приложении, добавьте компонент службы проверки орфографии, который включает определение объекта сеанса. Вы также можете добавить в свое приложение необязательное действие, которое управляет настройками. Добавьте файл метаданных XML, описывающий службу проверки правописания, и соответствующие элементы в файл манифеста.
Классы проверки орфографии
Определите объект службы и сеанса с помощью следующих классов:
- Подкласс
SpellCheckerService
SpellCheckerService
реализует как классService
, так и интерфейс платформы проверки орфографии. Внутри вашего подкласса реализуйте следующий метод:-
createSession()
- Фабричный метод, возвращающий объект
SpellCheckerService.Session
клиенту, желающему проверить правописание.
- Подкласс
- Реализация
SpellCheckerService.Session
- Объект, который служба проверки орфографии предоставляет клиентам, чтобы они могли передавать текст в программу проверки орфографии и получать предложения. В этом классе реализуйте следующие методы:
-
onCreate()
- Вызывается системой в ответ на
createSession()
. В этом методе вы можете инициализировать объектSpellCheckerService.Session
на основе текущего языкового стандарта и других деталей. -
onGetSentenceSuggestionsMultiple()
- Выполняет фактическую проверку орфографии. Этот метод возвращает массив
SentenceSuggestionsInfo
содержащий предложения для переданных ему предложений.
При желании вы можете реализовать
onCancel()
, который обрабатывает запросы на отмену проверки орфографии;onGetSuggestions()
, который обрабатывает запрос на предложение слов; илиonGetSuggestionsMultiple()
, который обрабатывает пакеты запросов на предложения слов.- Реализация
Манифест и метаданные проверки орфографии
Помимо кода предоставьте соответствующий файл манифеста и файл метаданных для проверки орфографии.
Файл манифеста определяет приложение, службу и действие для управления настройками, как показано в следующем примере:
<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>
Компоненты, которые хотят использовать эту службу, должны запросить разрешение BIND_TEXT_SERVICE
чтобы гарантировать привязку к службе только системы. В определении службы также указан файл метаданных spellchecker.xml
, который описан в следующем разделе.
Файл метаданных spellchecker.xml
содержит следующий 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>
Метаданные определяют действие, которое программа проверки орфографии использует для управления настройками. Он также определяет подтипы проверки орфографии. В этом случае подтипы определяют локали, которые может обрабатывать программа проверки правописания.
Доступ к службе проверки орфографии из клиента
приложения, использующие представления TextView
и EditText
автоматически получают выгоду от проверки орфографии, поскольку TextView
автоматически использует проверку орфографии:
![Изображение, показывающее, как автоматически включается проверка орфографии в EditText.](https://developer.android.google.cn/static/images/ui/spellchecker_edittext.png?hl=ru)
EditText
.Однако в других случаях вам может потребоваться напрямую взаимодействовать со службой проверки правописания. На следующей диаграмме показан поток управления для взаимодействия со службой проверки правописания:
![Изображение, показывающее схему взаимодействия со сервисом проверки орфографии.](https://developer.android.google.cn/static/resources/articles/images/spellcheck_client_flow.png?hl=ru)
Редактор метода ввода LatinIME в проекте Android с открытым исходным кодом содержит пример проверки орфографии.