Yazım denetleyici çerçevesi

Android platformu, uygulamanızda yazım denetimini uygulayıp bunlara erişmenizi sağlayan bir yazım denetleyici çerçevesi sunar. Çerçeve, Text Service API'lerinden biridir.

Uygulamanızda çerçeveyi kullanmak için yazım denetleyici session nesnesi oluşturan bir Android hizmeti oluşturursunuz. Oturum nesnesi, sağladığınız metne bağlı olarak yazım denetleyici tarafından oluşturulan yazım önerilerini döndürür.

Yazım denetleyici yaşam döngüsü

Aşağıdaki şemada yazım denetleyici hizmetinin yaşam döngüsü gösterilmektedir:

Yazım denetleyici hizmetinin yaşam döngüsünü gösteren resim
Şekil 1. Yazım denetleyici hizmetinin yaşam döngüsü.

Yazım denetimini başlatmak için uygulamanız yazım denetleyici hizmetini uygulamaya başlar. Uygulamanızdaki etkinlikler veya bağımsız kullanıcı arayüzü öğeleri gibi istemciler, hizmetten yazım denetleyici oturumu ister, ardından bu oturumu kullanarak metin önerileri alır. İstemci işlemini sonlandırdığında, yazım denetleyici oturumunu kapatır. Uygulamanız gerekirse yazım denetleyici hizmetini istediği zaman kapatabilir.

Yazım denetleyici hizmeti uygulayın

Uygulamanızda yazım denetleyici çerçevesini kullanmak için oturum nesne tanımını içeren bir yazım denetleyici hizmet bileşeni ekleyin. Uygulamanıza ayarları kontrol eden isteğe bağlı bir etkinlik de ekleyebilirsiniz. Yazım denetleyici hizmetini tanımlayan bir XML meta veri dosyası ve uygun öğeleri manifest dosyanıza ekleyin.

Yazım denetleyici sınıfları

Hizmeti ve oturum nesnesini aşağıdaki sınıflarla tanımlayın:

  • SpellCheckerService alt sınıfı
    SpellCheckerService, hem Service sınıfını hem de yazım denetleyici çerçevesi arayüzünü uygular. Alt sınıfınızda aşağıdaki yöntemi uygulayın:
    createSession()
    Yazım denetimi yapmak isteyen istemciye SpellCheckerService.Session nesnesi döndüren fabrika yöntemi.
  • SpellCheckerService.Session kullanımı
    Yazım denetleyici hizmetinin, metni yazım denetleyiciye gönderip öneriler almasını sağlamak için istemcilere sağladığı bir nesnedir. Bu sınıfta aşağıdaki yöntemleri uygulayın:
    onCreate()
    createSession() yanıtına yanıt olarak sistem tarafından çağrıldı. Bu yöntemle SpellCheckerService.Session nesnesini geçerli yerel ayara ve diğer ayrıntılara göre başlatabilirsiniz.
    onGetSentenceSuggestionsMultiple()
    Gerçek yazım denetimini gerçekleştirir. Bu yöntem, kendisine iletilen cümleler için önerileri içeren bir SentenceSuggestionsInfo dizisi döndürür.

    İsteğe bağlı olarak, yazım denetimini iptal etme isteklerini yerine getiren onCancel() özelliğini, kelime önerisi isteğini yerine getiren onGetSuggestions() veya kelime önerisi isteklerini toplu olarak işleyen onGetSuggestionsMultiple() özelliğini uygulayabilirsiniz.

Yazım denetleyici manifesti ve meta veriler

Koda ek olarak, yazım denetleyici için uygun manifest dosyasını ve bir meta veri dosyası sağlayın.

Manifest dosyası uygulamayı, hizmeti ve ayarları kontrol etmek için etkinliği aşağıdaki örnekte gösterildiği gibi tanımlar:

<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>

Hizmeti kullanmak isteyen bileşenler, yalnızca sistemin hizmete bağlandığından emin olmak için BIND_TEXT_SERVICE iznini istemelidir. Hizmetin tanımı, bir sonraki bölümde açıklanan spellchecker.xml meta veri dosyasını da belirtir.

spellchecker.xml meta veri dosyası aşağıdaki XML'i içerir:

<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>

Meta veriler, yazım denetleyicinin ayarları kontrol etmek için kullandığı etkinliği belirtir. Yazım denetleyici için alt türleri de tanımlar. Bu durumda alt türler, yazım denetleyicinin işleyebileceği yerel ayarları tanımlar.

Yazım denetleyici hizmetine istemciden erişme

TextView otomatik olarak yazım denetleyici kullandığından TextView ve EditText görünümünü kullanan uygulamalarda yazım denetiminden otomatik olarak yararlanır:

EditText&#39;te yazım denetleyicinin otomatik olarak nasıl etkinleştirildiğini gösteren resim
Şekil 2. EditText içinde yazım denetimi.

Ancak, diğer durumlarda doğrudan bir yazım denetleyici hizmetiyle etkileşim kurmak isteyebilirsiniz. Aşağıdaki şemada, bir yazım denetleyici hizmetiyle etkileşim için denetim akışı gösterilmektedir:

Bir yazım denetleyici hizmetiyle etkileşim diyagramını gösteren resim
Şekil 3. Yazım denetleyici hizmetiyle etkileşim.

Android Açık Kaynak Projesi'ndeki LatinIME giriş yöntemi düzenleyicisi bir yazım denetimi örneği içerir.