Framework de corretor ortográfico

A plataforma Android oferece um framework de corretor ortográfico que permite implementar e acessar a verificação ortográfica no seu app. A estrutura é uma APIs Text Service.

Para usar o framework no seu app, crie um serviço do Android que gera um objeto session do corretor ortográfico. Com base no texto enviado, o objeto session retorna sugestões de ortografia geradas pelo feitiço verificador de segurança.

Ciclo de vida do corretor ortográfico

O diagrama a seguir mostra o ciclo de vida do serviço de corretor ortográfico:

Uma imagem que mostra o ciclo de vida do serviço de corretor ortográfico
Figura 1. O serviço de corretor ortográfico no ciclo de vida de ML.

Para iniciar a verificação ortográfica, o app inicia a implementação da ortografia verificador de segurança. Clientes no seu app, como atividades ou interface individual elementos, solicite ao serviço uma sessão do corretor ortográfico e use a sessão para receber sugestões de texto. Quando o cliente encerra a operação, a sessão do corretor ortográfico. Se necessário, o app pode encerrar o feitiço verificador a qualquer momento.

Implementar um serviço de corretor ortográfico

Para usar o framework de corretor ortográfico no seu app, adicione um serviço de corretor ortográfico que inclui a definição do objeto de sessão. Também é possível adicionar um atividade opcional no app que controla as configurações. Adicionar um arquivo de metadados XML que descreva o serviço de corretor ortográfico e adicione os elementos apropriados ao no arquivo de manifesto.

Classes do corretor ortográfico

Defina o serviço e o objeto session com as seguintes classes:

  • Uma subclasse de SpellCheckerService
    O SpellCheckerService implementa o Service e a interface do framework do corretor ortográfico. Na sua subclasse, implemente o seguinte método:
    createSession()
    Um método de fábrica que retorna uma SpellCheckerService.Session a um cliente que quiser fazer uma verificação ortográfica.
  • Uma implementação do SpellCheckerService.Session
    Um objeto que o serviço de corretor ortográfico fornece aos clientes para permitir passa o texto ao corretor ortográfico e recebe sugestões. Dentro desta , implemente os seguintes métodos:
    onCreate()
    Chamado pelo sistema em resposta a createSession(). Neste método, você pode inicializar o objeto SpellCheckerService.Session com base no a localidade atual e outros detalhes.
    onGetSentenceSuggestionsMultiple()
    Executa a verificação ortográfica em si. Esse método retorna uma matriz de SentenceSuggestionsInfo contendo sugestões para as frases passadas a ela.

    Outra opção é implementar onCancel(), que lida com solicitações de cancelamento da verificação ortográfica; onGetSuggestions(), que lida com uma solicitação de sugestão de palavra. ou onGetSuggestionsMultiple(), que lida com lotes de solicitações de sugestão de palavras.

  • .

Manifesto e metadados do corretor ortográfico

Além do código, forneça o arquivo de manifesto adequado e um arquivo de metadados para o corretor ortográfico.

O arquivo de manifesto define o aplicativo, o serviço e a atividade para de controle de configurações, conforme mostrado no exemplo a seguir:

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

Os componentes que quiserem usar o serviço precisam solicitar a permissão BIND_TEXT_SERVICE para garantir que apenas o sistema seja vinculado ao serviço. A definição do serviço também especifica o arquivo de metadados spellchecker.xml, que é descritos na próxima seção.

O arquivo de metadados spellchecker.xml contém o seguinte 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>

Os metadados especificam a atividade que o corretor ortográfico usa para controlar configurações. Ela também define subtipos para o corretor ortográfico. Nesse caso, o Os subtipos definem as localidades que o corretor ortográfico pode manipular.

Acessar o serviço de corretor ortográfico de um cliente

de apps que usam TextView e EditText visualizações se beneficiam automaticamente da verificação ortográfica, porque TextView usa automaticamente um corretor ortográfico:

Uma imagem mostrando como o corretor ortográfico é ativado automaticamente no EditText
Figura 2. A verificação ortográfica em uma EditText:

No entanto, você pode querer interagir diretamente com um serviço de corretor ortográfico em outros casos. O diagrama a seguir mostra o fluxo de controle para interagir com um serviço de corretor ortográfico:

Imagem mostrando o diagrama da interação com um serviço de corretor ortográfico
Figura 3. Interação com um corretor ortográfico serviço.

A LatimIME "Editor de método de entrada" no Android Open Source Project contém um exemplo de verificação ortográfica.