Framework del corrector ortográfico

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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 clase Service 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 objeto SpellCheckerService.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; o onGetSuggestionsMultiple(), 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.