Framework del corrector ortográfico

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:

Imagen que muestra el ciclo de vida del servicio de corrector ortográfico
Figura 1: Ciclo de vida del servicio del 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 clase Service 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 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 objeto SpellCheckerService.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; o onGetSuggestionsMultiple(), que controla lotes de solicitudes de sugerencias de palabras.

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:

Imagen que muestra cómo se habilita automáticamente el corrector ortográfico en EditText
Figura 2: Corrección ortográfica en un EditText.

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:

Una imagen que muestra el diagrama de la interacción con un servicio de corrector ortográfico
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 verificación de ortografía.