Платформа проверки орфографии

Платформа Android предлагает платформу проверки орфографии, которая позволяет реализовать проверку орфографии и получить к ней доступ в вашем приложении. Платформа является одним из API текстовых служб.

Чтобы использовать платформу в своем приложении, вы создаете службу Android, которая генерирует объект сеанса проверки правописания. На основе предоставленного вами текста объект сеанса возвращает предложения по написанию, созданные программой проверки орфографии.

Жизненный цикл проверки орфографии

На следующей диаграмме показан жизненный цикл службы проверки орфографии:

Изображение, показывающее жизненный цикл службы проверки орфографии.
Рисунок 1. Жизненный цикл службы проверки правописания.

Чтобы начать проверку орфографии, ваше приложение запускает реализацию службы проверки орфографии. Клиенты в вашем приложении, такие как действия или отдельные элементы пользовательского интерфейса, запрашивают у службы сеанс проверки орфографии, а затем используют этот сеанс для получения предложений по тексту. Когда клиент завершает свою работу, он закрывает сеанс проверки орфографии. При необходимости ваше приложение может в любой момент отключить службу проверки правописания.

Внедрить службу проверки правописания

Чтобы использовать платформу проверки орфографии в своем приложении, добавьте компонент службы проверки орфографии, который включает определение объекта сеанса. Вы также можете добавить в свое приложение необязательное действие, которое управляет настройками. Добавьте файл метаданных 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.
Рисунок 2. Проверка орфографии в EditText .

Однако в других случаях вам может потребоваться напрямую взаимодействовать со службой проверки правописания. На следующей диаграмме показан поток управления для взаимодействия со службой проверки правописания:

Изображение, показывающее схему взаимодействия со сервисом проверки орфографии.
Рисунок 3. Взаимодействие со службой проверки орфографии.

Редактор метода ввода LatinIME в проекте Android с открытым исходным кодом содержит пример проверки орфографии.