Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

Framework pemeriksa ejaan

Platform Android menawarkan framework pemeriksa ejaan yang memungkinkan Anda menerapkan dan mengakses pemeriksaan ejaan di aplikasi Anda. Framework ini adalah salah satu API Layanan Teks yang ditawarkan oleh platform Android.

Untuk menggunakan framework di aplikasi, Anda perlu membuat jenis layanan Android khusus yang menghasilkan objek sesi pemeriksa ejaan. Berdasarkan teks yang Anda berikan, objek sesi akan memberikan saran ejaan yang dibuat oleh pemeriksa ejaan.

Siklus pemeriksa ejaan

Diagram berikut menunjukkan siklus layanan pemeriksa ejaan:

Gambar 1. Siklus layanan pemeriksa ejaan.

Untuk memulai pemeriksaan ejaan, aplikasi Anda akan mulai menerapkan layanan pemeriksa ejaan. Klien di aplikasi Anda, seperti aktivitas atau elemen UI individual, meminta sesi pemeriksa ejaan dari layanan, lalu menggunakan sesi tersebut untuk mendapatkan saran teks. Saat klien menghentikan operasi, sesi pemeriksa ejaannya akan ditutup. Jika perlu, aplikasi Anda dapat menonaktifkan layanan pemeriksa ejaan kapan pun.

Menerapkan layanan pemeriksa ejaan

Untuk menggunakan framework pemeriksa ejaan di aplikasi Anda, tambahkan komponen layanan pemeriksa ejaan yang berisi definisi objek sesi. 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 menerapkan class Service dan antarmuka framework pemeriksa ejaan. Dalam subclass, Anda harus menerapkan metode berikut:
createSession()
Metode pabrik yang mengembalikan objek SpellCheckerService.Session ke klien yang ingin melakukan pemeriksaan ejaan.

Lihat aplikasi contoh Layanan Pemeriksa Ejaan untuk mempelajari penerapan class ini lebih lanjut.

Penerapan 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 menerapkan metode berikut:
onCreate()
Dipanggil oleh sistem untuk merespons createSession(). Dalam metode ini, Anda dapat melakukan inisialisasi objek SpellCheckerService.Session berdasarkan lokasi saat ini dan seterusnya.
onGetSentenceSuggestionsMultiple()
Melakukan pemeriksaan ejaan aktual. Metode ini mengembalikan array SentenceSuggestionsInfo yang berisi saran untuk kalimat yang diteruskan.

Secara opsional, Anda dapat menerapkan onCancel(), yang menangani permintaan untuk membatalkan pemeriksaan ejaan, onGetSuggestions(), yang menangani permintaan saran kosakata, atau onGetSuggestionsMultiple(), yang menangani permintaan saran kata dalam batch.

Lihat aplikasi contoh Klien Pemeriksa Ejaan untuk mempelajari penerapan class ini lebih lanjut.

Catatan: Anda harus menerapkan semua aspek pemeriksaan ejaan sebagai asinkron dan aman terhadap thread. Pemeriksa ejaan dapat dipanggil secara simultan oleh beberapa thread berbeda yang berjalan pada inti 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 pada 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 secara otomatis mendapat manfaat dari pemeriksaan ejaan, karena TextView otomatis menggunakan pemeriksa ejaan. Screenshot menunjukkan hal tersebut:


Gambar 2. Pemeriksaan ejaan di TextView.

Namun, Anda mungkin juga perlu berinteraksi secara langsung dengan layanan pemeriksa ejaan dalam kasus lain. Diagram berikut menunjukkan alur kontrol untuk berinteraksi dengan layanan pemeriksa ejaan:

Gambar 3. Berinteraksi dengan layanan pemeriksa ejaan.

Aplikasi contoh Klien Pemeriksa Ejaan menunjukkan cara berinteraksi dengan layanan pemeriksa ejaan. Editor metode masukan LatinIME di Project Open Source Android juga berisi contoh pemeriksaan ejaan.