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](https://developer.android.google.cn/static/resources/articles/images/spellcheck_lifecycle.png?authuser=7&hl=pt)
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 classeService
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 subclasse de
-
- 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 objetoSpellCheckerService.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, ouonGetSuggestionsMultiple()
, que processa lotes de solicitações de sugestão de palavras. - Uma implementação de
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](https://developer.android.google.cn/static/images/ui/spellchecker_edittext.png?authuser=7&hl=pt)
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](https://developer.android.google.cn/static/resources/articles/images/spellcheck_client_flow.png?authuser=7&hl=pt)
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.