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 app. El framework es una de las APIs del servicio de texto.
Para usar el framework en tu app, debes crear un 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:
Para iniciar el corrector ortográfico, la app debe iniciar la implementación del servicio del corrector ortográfico. Los clientes de tu app, como actividades o elementos individuales de la IU, 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, tu app 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 de la sesión. También puedes agregar a tu app una actividad opcional que controle la configuración. Agrega un archivo de metadatos XML que describa el servicio de corrector ortográfico y agrega los elementos adecuados a tu 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, implementa el siguiente método:createSession()
- Un método de fábrica que muestra un objeto
SpellCheckerService.Session
a un cliente que quiere revisar la ortografía.
- Una subclase de
-
- Una implementación de
SpellCheckerService.Session
- Objeto que el servicio de corrector ortográfico proporciona a los clientes para permitirles pasar texto al corrector ortográfico y recibir sugerencias. Dentro de esta clase, implementa 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 y otros detalles. onGetSentenceSuggestionsMultiple()
- Realiza la corrección ortográfica real. Este método muestra un array de
SentenceSuggestionsInfo
con sugerencias para las oraciones que se le pasaron.
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 controla lotes de solicitudes de sugerencias de palabras. - Una implementación de
Manifiesto y metadatos del corrector ortográfico
Además del código, proporciona el archivo de manifiesto adecuado y un archivo de metadatos para el corrector ortográfico.
El archivo de manifiesto define la app, el servicio y la actividad para controlar la configuración, como se muestra en el siguiente ejemplo:
<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>
Los componentes que quieran usar el servicio deben solicitar el permiso BIND_TEXT_SERVICE
para garantizar 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 el corrector ortográfico utiliza para controlar la configuración. También define los subtipos del corrector ortográfico. En este caso, los subtipos definen las configuraciones regionales que el corrector ortográfico puede controlar.
Cómo acceder al servicio de corrector ortográfico de un cliente
las apps que usan las vistas TextView
y EditText
se benefician automáticamente de la corrección ortográfica, porque TextView
usa automáticamente un corrector ortográfico:
Sin embargo, en otros casos, es posible que quieras interactuar directamente con el servicio de corrector ortográfico. En el siguiente diagrama, se muestra el flujo de control para interactuar 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 verificación de ortografía.