Platform Android menawarkan framework pemeriksa ejaan yang memungkinkan Anda menerapkan dan mengakses pemeriksaan ejaan di aplikasi. Framework ini adalah salah satu dari Text Service API.
Untuk menggunakan framework di aplikasi, Anda harus membuat layanan Android yang menghasilkan objek session pemeriksa ejaan. Berdasarkan teks yang Anda berikan, objek sesi akan menampilkan saran ejaan yang dibuat oleh pemeriksa ejaan.
Siklus proses pemeriksa ejaan
Diagram berikut menunjukkan siklus proses layanan pemeriksa ejaan:
Untuk memulai pemeriksaan ejaan, aplikasi Anda akan memulai implementasi layanan pemeriksa ejaan. Klien di aplikasi Anda, seperti aktivitas atau setiap elemen UI, meminta sesi pemeriksa ejaan dari layanan, lalu menggunakan sesi tersebut untuk mendapatkan saran teks. Saat klien menghentikan operasinya, sesi pemeriksa ejaannya akan ditutup. Jika perlu, aplikasi Anda dapat menonaktifkan layanan pemeriksa ejaan kapan saja.
Mengimplementasikan layanan pemeriksa ejaan
Untuk menggunakan framework pemeriksa ejaan di aplikasi Anda, tambahkan komponen layanan pemeriksa ejaan yang menyertakan definisi objek sesi. Anda juga dapat menambahkan aktivitas opsional ke aplikasi yang mengontrol setelan. Tambahkan file metadata XML yang mendeskripsikan layanan pemeriksa ejaan, dan tambahkan 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, terapkan metode berikut:createSession()
- Metode factory yang menampilkan objek
SpellCheckerService.Session
ke klien yang ingin memeriksa ejaan.
- Subclass
-
- Implementasi
SpellCheckerService.Session
- Objek yang diberikan oleh layanan pemeriksa ejaan kepada klien untuk memungkinkan mereka meneruskan teks ke pemeriksa ejaan dan menerima saran. Dalam class ini, terapkan metode berikut:
onCreate()
- Dipanggil oleh sistem untuk merespons
createSession()
. Dalam metode ini, Anda dapat menginisialisasi objekSpellCheckerService.Session
berdasarkan lokalitas saat ini dan detail lainnya. 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 kata; atauonGetSuggestionsMultiple()
, yang menangani batch permintaan saran kata. - Implementasi
Manifes dan metadata pemeriksa ejaan
Selain kode, berikan file manifes dan file metadata yang sesuai untuk pemeriksa ejaan.
File manifes menentukan aplikasi, layanan, dan aktivitas untuk mengontrol setelan, seperti yang ditunjukkan dalam contoh 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>
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 ini menentukan aktivitas yang digunakan pemeriksa ejaan untuk mengontrol setelan. Kolom ini juga menentukan subjenis untuk pemeriksa ejaan. Dalam hal ini, subjenis menentukan lokalitas yang dapat ditangani pemeriksa ejaan.
Akses layanan pemeriksa ejaan dari klien
aplikasi yang menggunakan tampilan
TextView
dan
EditText
akan otomatis mendapatkan manfaat dari pemeriksaan ejaan, karena TextView
otomatis menggunakan pemeriksa ejaan:
Namun, sebaiknya Anda berinteraksi langsung dengan layanan pemeriksa ejaan dalam kasus lain. Diagram berikut menunjukkan alur kontrol untuk berinteraksi dengan layanan pemeriksa ejaan:
Editor metode input LatinIME di Project Open Source Android berisi contoh pemeriksaan ejaan.