Framework pemeriksa ejaan

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:

Gambar yang menampilkan siklus proses layanan pemeriksa ejaan
Gambar 1. Siklus 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 class Service 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.
  • 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 objek SpellCheckerService.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; atau onGetSuggestionsMultiple(), yang menangani batch permintaan saran kata.

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:

Gambar yang menunjukkan cara pemeriksa ejaan diaktifkan secara otomatis di EditText
Gambar 2. Memeriksa ejaan di EditText.

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

Gambar yang menunjukkan diagram interaksi dengan layanan pemeriksa ejaan
Gambar 3. Interaksi dengan layanan pemeriksa ejaan.

Editor metode input LatinIME di Project Open Source Android berisi contoh pemeriksaan ejaan.