Framework per il controllo ortografico

La piattaforma Android offre un framework di controllo ortografico che ti consente di implementare e accedere al controllo ortografico nella tua app. Il framework è una delle API Text Service.

Per utilizzare il framework nella tua app, devi creare un servizio Android che generi un oggetto sessione di controllo ortografico. In base al testo fornito, l'oggetto sessione restituisce suggerimenti ortografici generati dal controllo ortografico.

Ciclo di vita del controllo ortografico

Il seguente diagramma mostra il ciclo di vita del servizio di controllo ortografico:

Un'immagine che mostra il ciclo di vita del servizio di controllo ortografico
Figura 1. Il ciclo di vita del servizio di controllo ortografico.

Per avviare il controllo ortografico, l'app avvia l'implementazione del servizio di controllo ortografico. I client della tua app, ad esempio attività o singoli elementi dell'interfaccia utente, richiedono al servizio una sessione di controllo ortografico, quindi utilizzano la sessione per ricevere suggerimenti relativi al testo. Quando un client termina l'operazione, chiude la sessione di controllo ortografico. Se necessario, l'app può disattivare il servizio di controllo ortografico in qualsiasi momento.

Implementare un servizio di controllo ortografico

Per utilizzare il framework di controllo ortografico nella tua app, aggiungi un componente del servizio che includa la definizione dell'oggetto sessione. Puoi anche aggiungere un'attività facoltativa alla tua app per controllare le impostazioni. Aggiungi un file XML di metadati che descriva il servizio di controllo ortografico, quindi aggiungi gli elementi appropriati al file manifest.

Classi di controllo ortografico

Definisci l'oggetto servizio e sessione con le seguenti classi:

  • Una sottoclasse di SpellCheckerService
    SpellCheckerService implementa sia la classe Service sia l'interfaccia del framework di controllo ortografico. All'interno della sottoclasse, implementa il seguente metodo:
    createSession()
    Un metodo di fabbrica che restituisce un oggetto SpellCheckerService.Session a un client che vuole controllare l'ortografia.
  • Un'implementazione di SpellCheckerService.Session
    Oggetto fornito dal servizio di controllo ortografico ai client per consentire loro di passare testo al controllo ortografico e ricevere suggerimenti. All'interno di questa classe, implementa i seguenti metodi:
    onCreate()
    Richiamato dal sistema in risposta a createSession(). In questo metodo, puoi inizializzare l'oggetto SpellCheckerService.Session in base alle impostazioni internazionali correnti e ad altri dettagli.
    onGetSentenceSuggestionsMultiple()
    Esegue il controllo ortografico effettivo. Questo metodo restituisce un array di SentenceSuggestionsInfo contenente suggerimenti per le frasi passate.

    Facoltativamente, puoi implementare onCancel(), che gestisce le richieste di annullamento del controllo ortografico; onGetSuggestions(), che gestisce una richiesta di suggerimento di parole, oppure onGetSuggestionsMultiple(), che gestisce batch di richieste di suggerimento di parole.

File manifest del controllo ortografico e metadati

Oltre al codice, fornisci il file manifest appropriato e un file di metadati per il controllo ortografico.

Il file manifest definisce l'app, il servizio e l'attività per controllare le impostazioni, come mostrato nell'esempio seguente:

<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>

I componenti che vogliono utilizzare il servizio devono richiedere l'autorizzazione BIND_TEXT_SERVICE per garantire che solo il sistema si associ al servizio. La definizione del servizio specifica anche il file di metadati spellchecker.xml, descritto nella sezione successiva.

Il file di metadati spellchecker.xml contiene il seguente 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>

I metadati specificano l'attività utilizzata dal controllo ortografico per controllare le impostazioni. Definisce inoltre dei sottotipi per il controllo ortografico. In questo caso, i sottotipi definiscono le impostazioni internazionali che il controllo ortografico può gestire.

Accedi al servizio di controllo ortografico da un client

Le app che utilizzano le viste TextView e EditText usufruiscono automaticamente del controllo ortografico, perché TextView usa automaticamente un controllo ortografico:

Un&#39;immagine che mostra come il controllo ortografico viene attivato automaticamente in EditText
Figura 2. Controllo ortografico in un EditText.

Tuttavia, in altri casi potresti voler interagire direttamente con un servizio di controllo ortografico. Il seguente diagramma mostra il flusso di controllo per l'interazione con un servizio di controllo ortografico:

Un&#39;immagine che mostra il diagramma dell&#39;interazione con un servizio di controllo ortografico
Figura 3. Interazione con un servizio di controllo ortografico.

L'editor dei metodi di input LatinIME nel progetto Android Open Source contiene un esempio di controllo ortografico.