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 aplicativo. O framework é uma das APIs de serviço de texto oferecidas pela plataforma Android.

Para usar o framework no seu app, crie um tipo especial de serviço Android que gere um objeto session do corretor ortográfico. Com base no texto fornecido, o objeto da sessão retorna sugestões de ortografia geradas pelo corretor ortográfico.

Ciclo de vida do corretor ortográfico

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

Figura 1. O ciclo de vida do serviço de corretor ortográfico.

Para iniciar a verificação ortográfica, seu app inicia a implementação do serviço de corretor ortográfico. Os clientes no seu app, como atividades ou elementos individuais da IU, solicitam ao serviço uma sessão do corretor ortográfico e a usam para ver sugestões para o texto. Ao encerrar a operação, o cliente encerra a sessão do corretor ortográfico. Se necessário, o app pode encerrar o serviço do corretor ortográfico a qualquer momento.

Implementar um serviço de corretor ortográfico

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

Classes do corretor ortográfico

Defina o serviço e o objeto sessão com as seguintes classes:

Uma subclasse de SpellCheckerService
O SpellCheckerService implementa a classe Service e a interface do framework do corretor ortográfico. Na sua subclasse, é necessário implementar o seguinte método:
createSession()
Um método de fábrica que retorna um objeto SpellCheckerService.Session para um cliente que queira fazer a correção ortográfica.

Veja o app de amostra do Serviço de Corretor Ortográfico para saber mais sobre como implementar essa classe.

Uma implementação de SpellCheckerService.Session
Um objeto que o serviço de corretor ortográfico fornece aos clientes para permitir que eles passem texto ao corretor ortográfico e recebam sugestões. Nessa classe, é necessário implementar os seguintes métodos:
onCreate()
Chamado pelo sistema em resposta a createSession(). Nesse método, você pode inicializar o objeto SpellCheckerService.Session com base na localidade atual e assim por diante.
onGetSentenceSuggestionsMultiple()
Faz a correção ortográfica em si. Esse método retorna uma matriz de SentenceSuggestionsInfo contendo sugestões para as frases passadas para ele.

Opcionalmente, é possível implementar onCancel(), que processa solicitações para cancelar a correção ortográfica, onGetSuggestions(), que processa uma solicitação de sugestão de palavras, ou onGetSuggestionsMultiple(), que processa lotes de solicitações de sugestão de palavras.

Veja o app de amostra Cliente do Corretor Ortográfico para saber mais sobre como implementar essa classe.

Observação: é necessário implementar todos os aspectos da verificação ortográfica como assíncronos e seguros para as linhas de execução. Um corretor ortográfico pode ser chamado simultaneamente por linhas de execução diferentes, executadas em núcleos diferentes. SpellCheckerService e SpellCheckerService.Session cuidam disso automaticamente.

Manifesto e metadados do corretor ortográfico

Além do código, é necessário fornecer 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 controlar as configurações, conforme mostrado no snippet 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 somente o sistema seja vinculado ao serviço. A definição do serviço também especifica o arquivo de metadados spellchecker.xml, que é descrito 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 as configurações. Também definem os subtipos do corretor ortográfico. Nesse caso, os subtipos definem as localidades que o corretor ortográfico pode manipular.

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

Aplicativos que usam visualizações TextView são automaticamente beneficiados pela verificação ortográfica, porque o TextView usa o corretor automaticamente. As capturas de tela a seguir mostram isso:


Figura 2. Verificação ortográfica no TextView.

Contudo, você também pode querer interagir diretamente com o 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 verificação ortográfica:

Figura 3. Interação com um serviço de corretor ortográfico.

O editor de método de entrada LatinIME do Android Open Source Project contém um exemplo de verificação ortográfica.