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 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
, hemService
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öntemleSpellCheckerService.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 getirenonGetSuggestions()
veya kelime önerisi isteklerini toplu olarak işleyenonGetSuggestionsMultiple()
ö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:
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:
Android Açık Kaynak Projesi'ndeki LatinIME giriş yöntemi düzenleyicisi bir yazım denetimi örneği içerir.