Platform Android menawarkan framework pemeriksa ejaan yang memungkinkan Anda mengimplementasikan dan mengakses pemeriksaan ejaan di aplikasi Anda. Framework ini adalah salah satu Text Service API yang ditawarkan oleh platform Android.
Untuk menggunakan framework di aplikasi, Anda perlu membuat jenis layanan Android khusus yang menghasilkan objek session pemeriksa ejaan. Berdasarkan teks yang Anda berikan, objek session akan memberikan saran ejaan yang dibuat oleh pemeriksa ejaan.
Siklus proses pemeriksa ejaan
Diagram berikut menunjukkan siklus proses layanan pemeriksa ejaan:

Gambar 1. Siklus proses layanan pemeriksa ejaan.
Untuk memulai pemeriksaan ejaan, aplikasi Anda akan memulai dengan mengimplementasikan layanan pemeriksa ejaan. Klien di aplikasi Anda, seperti aktivitas atau elemen UI individual, kemudian meminta sesi pemeriksa ejaan dari layanan, lalu menggunakannya untuk mendapatkan saran teks. Saat klien menghentikan operasinya, sesi pemeriksa ejaannya akan ditutup. Jika perlu, aplikasi Anda dapat menonaktifkan layanan pemeriksa ejaan kapan pun.
Mengimplementasikan layanan pemeriksa ejaan
Untuk menggunakan framework pemeriksa ejaan di aplikasi Anda, tambahkan komponen layanan pemeriksa ejaan yang berisi definisi objek session. Anda juga dapat menambahkan aktivitas opsional yang mengontrol setelan ke aplikasi Anda. Anda juga harus menambahkan file metadata XML yang mendeskripsikan layanan pemeriksa ejaan, dan menambahkan elemen yang sesuai ke file manifes Anda.
Class pemeriksa ejaan
Tentukan objek layanan dan sesi dengan class berikut:
-
Subclass
SpellCheckerService
-
SpellCheckerService
mengimplementasikan classService
dan antarmuka framework pemeriksa ejaan. Dalam subclass, Anda harus mengimplementasikan metode berikut:createSession()
-
Metode standar yang mengembalikan objek
SpellCheckerService.Session
ke klien yang ingin melakukan pemeriksaan ejaan.
Lihat aplikasi contoh Layanan Pemeriksa Ejaan untuk mempelajari implementasi class ini lebih lanjut.
-
Implementasi
SpellCheckerService.Session
-
Objek yang diberikan kepada klien oleh layanan pemeriksa ejaan, agar dapat meneruskan teks ke
pemeriksa ejaan dan menerima saran. Dalam class ini, Anda harus mengimplementasikan
metode berikut:
-
onCreate()
-
Dipanggil oleh sistem untuk merespons
createSession()
. Dalam metode ini, Anda dapat melakukan inisialisasi objekSpellCheckerService.Session
berdasarkan lokasi saat ini dan seterusnya. -
onGetSentenceSuggestionsMultiple()
-
Melakukan pemeriksaan ejaan aktual. Metode ini menampilkan array
SentenceSuggestionsInfo
yang berisi saran untuk kalimat yang diteruskan.
Secara opsional, Anda dapat mengimplementasikan
onCancel()
, yang menangani permintaan untuk membatalkan pemeriksaan ejaan,onGetSuggestions()
, yang menangani permintaan saran kosakata, atauonGetSuggestionsMultiple()
, yang menangani permintaan saran kosakata dalam batch.Lihat aplikasi contoh Klien Pemeriksa Ejaan untuk mempelajari implementasi class ini lebih lanjut.
-
Catatan: Anda harus mengimplementasikan semua aspek pemeriksaan ejaan sebagai asinkron dan
aman terhadap thread. Pemeriksa ejaan dapat dipanggil secara bersamaan oleh beberapa thread berbeda yang berjalan pada
inti (core) yang berbeda. SpellCheckerService
dan
SpellCheckerService.Session
akan otomatis menanganinya.
Manifes dan metadata pemeriksa ejaan
Selain kode, Anda juga harus menyediakan file manifes dan metadata yang sesuai untuk pemeriksa ejaan.
File manifes mendefinisikan aplikasi, layanan, dan aktivitas untuk mengontrol setelan, seperti yang ditunjukkan dalam cuplikan berikut:
<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>
Perhatikan bahwa komponen yang ingin menggunakan layanan harus meminta izin
BIND_TEXT_SERVICE
untuk memastikan bahwa hanya sistem yang terikat
ke layanan. Definisi layanan juga menentukan file metadata
spellchecker.xml
, yang dijelaskan di bagian berikutnya.
File metadata spellchecker.xml
berisi XML berikut:
<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>
Metadata menentukan aktivitas yang digunakan pemeriksa ejaan untuk mengontrol setelan. Metadata juga mendefinisikan subjenis untuk pemeriksa ejaan; dalam hal ini, subjenis menentukan lokal yang dapat ditangani pemeriksa ejaan.
Akses layanan pemeriksa ejaan dari klien
Aplikasi yang menggunakan tampilan TextView
otomatis dapat memanfaatkan pemeriksaan
ejaan karena TextView
otomatis menggunakan pemeriksa ejaan. Hal tersebut ditunjukkan
dalam screenshot berikut ini:


Gambar 2. Pemeriksaan ejaan di TextView.
Namun, sebaiknya Anda juga berinteraksi langsung dengan layanan pemeriksa ejaan di kasus penggunaan lainnya. Diagram berikut menunjukkan alur kontrol untuk berinteraksi dengan layanan pemeriksa ejaan:

Gambar 3. Berinteraksi dengan layanan pemeriksa ejaan.
Anda dapat melihat contoh pemeriksaan ejaan di Editor metode input LatinIME di Proyek Open Source Android.