La plataforma de Android ofrece un framework del corrector ortográfico que te permite implementar y acceder a la corrección ortográfica en tu aplicación. El framework es una de las API de Text Service que ofrece la plataforma de Android.
Para usar el framework en tu app, debes crear un tipo especial de servicio de Android que genere un objeto session del corrector ortográfico. Según el texto que proporciones, el objeto session muestra sugerencias de ortografía que genera el corrector ortográfico.
Ciclo de vida del corrector ortográfico
En el siguiente diagrama, se muestra el ciclo de vida del servicio de corrector ortográfico:

Figura 1: El ciclo de vida del servicio del corrector ortográfico
Para iniciar la corrección ortográfica, tu app debe iniciar la implementación del servicio del corrector ortográfico. Los clientes de la app, como actividades o elementos de la IU individuales, solicitan una sesión del corrector ortográfico del servicio y, luego, la usan para obtener sugerencias de texto. Cuando un cliente finaliza su operación, se cierra la sesión del corrector ortográfico. Si es necesario, la aplicación puede cerrar el servicio de corrector ortográfico en cualquier momento.
Cómo implementar un servicio de corrector ortográfico
Para usar el framework del corrector ortográfico en tu app, agrega un componente del servicio de corrector ortográfico que incluya la definición del objeto session. También puedes agregar a la app una actividad opcional que controle la configuración. Además, debes agregar un archivo de metadatos XML que describa el servicio de corrector ortográfico y los elementos apropiados al archivo de manifiesto.
Clases de corrector ortográfico
Define el servicio y el objeto de la sesión con las siguientes clases:
-
Una subclase de
SpellCheckerService
-
SpellCheckerService
implementa tanto la claseService
como la interfaz del framework del corrector ortográfico. Dentro de la subclase, debes implementar el siguiente método:createSession()
-
Es un método de fábrica que muestra un objeto
SpellCheckerService.Session
a un cliente que desea realizar una corrección ortográfica.
Consulta la app de muestra Servicio de corrector ortográfico para obtener más información sobre la implementación de esta clase.
-
Una implementación de
SpellCheckerService.Session
-
Es un objeto que el servicio de corrector ortográfico ofrece a los clientes para permitirles pasar el texto por el corrector ortográfico y recibir sugerencias. Dentro de esta clase, debes implementar los siguientes métodos:
-
onCreate()
-
Lo llama el sistema en respuesta a
createSession()
. En este método, puedes inicializar el objetoSpellCheckerService.Session
según la configuración regional actual, etcétera. -
onGetSentenceSuggestionsMultiple()
-
Realiza la corrección ortográfica real. Este método muestra un arreglo de
SentenceSuggestionsInfo
que tiene sugerencias para las oraciones que pasan por él.
De manera opcional, puedes implementar
onCancel()
, que controla las solicitudes para cancelar la corrección ortográfica;onGetSuggestions()
, que controla una solicitud de sugerencia de palabras; oonGetSuggestionsMultiple()
, que maneja lotes de solicitudes de sugerencias de palabras.Consulta la app de muestra Spell Checker Client para obtener más información sobre la implementación de esta clase.
-
Nota: Debes implementar todos los aspectos de la corrección ortográfica como asíncronos y seguros para subprocesos. Diferentes subprocesos que se ejecutan en distintos núcleos pueden llamar al corrector ortográfico de forma simultánea. SpellCheckerService
y SpellCheckerService.Session
se encargan de esto automáticamente.
Manifiesto y metadatos del corrector ortográfico
Además del código, debes proporcionar el archivo de manifiesto adecuado y un archivo de metadatos para el corrector ortográfico.
El archivo de manifiesto define la aplicación, el servicio y la actividad para controlar la configuración, como se muestra en el siguiente fragmento:
<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>
Ten en cuenta que los componentes que quieran usar el servicio deben solicitar el permiso BIND_TEXT_SERVICE
para asegurarse de que solo el sistema se vincule al servicio. La definición del servicio también especifica el archivo de metadatos spellchecker.xml
, que se describe en la siguiente sección.
El archivo de metadatos spellchecker.xml
contiene el siguiente 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>
Los metadatos especifican la actividad que la corrección ortográfica usa para controlar la configuración. También define los subtipos del corrector ortográfico; en este caso, las configuraciones regionales que la corrección ortográfica puede controlar.
Cómo acceder al servicio de corrector ortográfico de un cliente
Las aplicaciones que usan vistas TextView
se benefician automáticamente de la corrección ortográfica, porque TextView
usa automáticamente un corrector ortográfico. Las siguientes capturas de pantalla muestran esto:


Figura 2: Corrección ortográfica en TextView
Sin embargo, es posible que también quieras interactuar directamente con un servicio de corrector ortográfico en otros casos. El siguiente diagrama muestra el flujo de control para interactuar con un servicio de corrección ortográfica:

Figura 3: Interacción con un servicio de corrector ortográfico
El Editor de método de entrada de LatinIME en el Proyecto de código abierto de Android contiene un ejemplo de corrección ortográfica.