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. O framework é uma das APIs Text Service.

Para usar o framework no seu app, crie um serviço do 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 de corretor ortográfico:

Imagem que mostra o ciclo de vida do serviço de corretor ortográfico
Figura 1. 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 verificação ortográfica. Os clientes no seu app, como atividades ou elementos individuais da IU, solicitam ao serviço uma sessão de verificação ortográfica e a usam para receber sugestões de texto. Quando um cliente encerra a operação, ele encerra a sessão do corretor ortográfico. Se necessário, o app pode encerrar o serviço de verificação ortográfica 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 que inclua a definição do objeto da sessão. Você também pode adicionar uma atividade opcional ao app que controle as configurações. Adicione um arquivo de metadados XML que descreva o serviço de verificação ortográfica e adicione os elementos apropriados ao 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 a classe 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 um objeto SpellCheckerService.Session para um cliente que quer verificar a ortografia.
  • Uma implementação de SpellCheckerService.Session
    Um objeto que o serviço de verificação ortográfica oferece aos clientes para permitir que eles transmitam texto ao corretor ortográfico e recebam sugestões. Nessa classe, implemente os seguintes métodos:
    onCreate()
    Chamado pelo sistema em resposta a createSession(). Nesse método, é possível inicializar o objeto SpellCheckerService.Session com base na localidade atual e em outros detalhes.
    onGetSentenceSuggestionsMultiple()
    Executa a verificação ortográfica real. 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 de cancelamento da verificaçã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.

Manifesto e metadados do corretor ortográfico

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

O arquivo de manifesto define o app, o serviço e a atividade para controlar as configurações, conforme mostrado no exemplo abaixo:

<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 se vincule 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. Ela também define subtipos para o corretor ortográfico. Nesse caso, os subtipos definem as localidades que o corretor ortográfico pode processar.

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

Os apps que usam as visualizações TextView e EditText se beneficiam automaticamente da verificação ortográfica, porque o TextView usa esse recurso automaticamente:

Imagem mostrando como o corretor ortográfico é ativado automaticamente em EditText
Figura 2. Verificação ortográfica em um EditText.

No entanto, pode ser necessário 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:

Uma imagem que mostra o diagrama da interação com um serviço de verificação ortográfica
Figura 3. Interação com um serviço de verificação ortográfica.

O editor de método de entrada LatinIME no Android Open Source Project (link em inglês) contém um exemplo de verificação ortográfica.