原文:http://android.eoe.cn/topic/android_sdk
拼寫檢查器框架
Android平臺提供了一個拼寫檢查器的框架,來方便你在你的應用中實現並使用拼寫檢查。這個框架是Android平臺提供的文字服務API之一。
要在你的應用中使用該框架,你需要建立一個特殊的AndroidService來生成一個拼寫檢查器會話物件。這個會話物件會基於你提供的文字,來返回拼寫檢查器生成的拼寫建議。
以下的圖表顯示了拼寫檢查器服務的生命週期:
http://developer.android.com/resources/articles/images/spellcheck_lifecycle.png
圖1.拼寫檢查器服務的生命週期。
為了初始化拼寫檢查,你的應用必須實現它自己的拼寫檢查器服務。你應用中的客戶端,比如activity,或是獨立的UI元素,需要從服務中獲取一個拼寫檢查器會話,然後使用該會話為文字獲取拼寫建議。當一個客戶端停止它的活動時,它結束自己的會話。你的應用可以在必要時,隨時關閉拼寫檢查器服務。
為了在你的應用中使用拼寫檢查器框架,你需要新增一個包含會話物件實現的拼寫檢查器服務元件。你也可以為你的應用增加一個可選的activity來控制設定。你也必須新增一個後設資料xml檔案來描述拼寫檢查器服務,並在manifest檔案中增加適當的元素。
拼寫檢查類。
用以下的類來定義服務和會話物件:
一個SpellCheckerService的子類。
:SpellCheckerService實現了Service類和拼寫檢查器框架介面,在你的子類中,你必須實現以下方法:
:createSession())
::這是一個工廠方法,它為客戶端返回一個 SpellCheckerService.Session 物件來實現拼寫檢查。
:檢視Spell Checker Service 樣例應用,來學習更多實現該類的知識。
一個SpellCheckerService.Session的實現。
:這是一個拼寫檢查器服務給客戶提供的物件,來讓他們把文字傳遞給拼寫檢查器並接收提示。在這個類裡,你必須實現以下方法:
:onCreate())
::這是createSession())的系統回撥函式,在這個方法中,你可以基於本地化以及其它內容,初始化SpellCheckerService.Session物件。
:[http://developer.android.com/reference/android/service/textservice/SpellCheckerService.Session.html#onGetSentenceSuggestionsMultipleandroid.view.textservice.TextInfo[](, int) onGetSentenceSuggestionsMultiple()]
::該函式真正來進行拼寫檢查,它返回一個SentenceSuggestionsInfo陣列,該陣列包含了傳入句子的提示。
:你也可以實現一些可選的函式,比如onCancel())是用來處理取消拼寫檢查的請求,int) onGetSuggestions()是用來處理一個詞提示請求,或者int) onGetSuggestionsMultiple()是用來處理一組詞的提示的請求。
:檢視Spell Checker Service 例子應用來學習更多。
注意:你必須把拼寫檢查設為非同步和執行緒安全的。一個拼寫檢查器可能被在不同核心上的不同的執行緒同時呼叫。SpellCheckerService 和 SpellCheckerService.Session自動實現了上述要求。
拼寫檢查器的宣告和後設資料
除了程式碼以外,你需要為拼寫檢查器提供合適的manifest檔案和後設資料檔案。
mainifestt檔案定義了應用,服務,以及用於設定的活動,如下示:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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>
|
注意想要使用該服務的元件需要使用BIND_TEXT_SERVICE的許可來確保系統繫結該服務。該服務的定義中還確定了spellchecker.xml後設資料檔案,這將在下一節給出。
後設資料檔案spellchecker.xml的內容如下:
後設資料裡確定了拼寫檢查器用於控制設定的activity。它還定義了拼寫檢查器的子類;在這種情況下,子類定義了拼寫檢查器適用的地區。
使用TextView檢視應用自動獲取拼寫檢查,因為TextView會自動使用一個拼寫檢查器。如下截圖所示:
http://developer.android.com/resources/articles/images/textview_spellcheck_screenshot_2.png
圖2.TextView中的拼寫檢查
然而在其它情況下,你可能也想要直接與拼寫檢查器服務進行交流。如下圖表是直接與拼寫檢查器交流的控制流程:
http://developer.android.com/resources/articles/images/spellcheck_client_flow.png
圖3.與一個拼寫檢查器服務互動。
Spell Checker Service 例子應用,將教你如何與一個拼寫檢查服務進行互動。Android Open Source Project裡的LatinIME輸入法編輯器裡也有一個拼寫檢查的例子。