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 classeService
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 objetoSpellCheckerService.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, ouonGetSuggestionsMultiple()
, 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.