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:
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 classeService
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.
- Una sottoclasse di
-
- 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'oggettoSpellCheckerService.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, oppureonGetSuggestionsMultiple()
, che gestisce batch di richieste di suggerimento di parole. - Un'implementazione di
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:
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:
L'editor dei metodi di input LatinIME nel progetto Android Open Source contiene un esempio di controllo ortografico.