[Google Android] Creating Your Own Spelling Checker Service
創建你自己的拼寫檢查服務
Posted by Satoshi Kataoka and Ken Wakasa of the Android text input engineering team。翻譯:tamer.cnblogs.com
拼寫檢查器框架通過幫助用戶快速的識別并糾正拼寫錯誤來提高Android平臺的輸入體驗。當App使用了拼寫檢查器框架后,用戶可以看到在拼錯的或不能識別的字符下有紅色的下劃線,這樣用戶就可以通過選擇下拉列表提供的建議詞組快速地糾正錯誤。
如果你是一個輸入法(IME)開發者,那么拼寫檢查器框架給你一個非常好的方式來為你的用戶提供更好的體驗。你可以為你的IME添加你自己的拼寫檢查器服務,從你自定義的字典中來提供一致的拼寫錯誤修正。你的拼寫檢查器能夠識別并為這些詞匯提供正確的建議,這對你的用戶來說是非常重要的,并且如果內建的拼寫檢查器并不支持你的語言,你可以提供一個支持那種語言的拼寫檢查器。
拼寫檢查器的API讓你用很少的步驟就能創建你自己的拼寫檢查器服務。這個框架管理著你的拼寫檢查器服務與文本輸入域的交互。在這篇文章中,我們會給你一個如何實現拼寫檢查器服務的概述。詳情請看拼寫檢查器框架API指南。
1. 創建一個拼寫檢查器服務器類
為了創建一個拼寫檢查器服務,第一步要創建一個繼承自android.service.textservice.SpellCheckerService的拼寫檢查器服務類。
為了能實現一個拼寫檢查器的例子,你可以學習一下Android SDK提供的SpellChecker例子程序中的SampleSpellCheckerService類,
2. 實現需要的方法
下一步,在你的SpellCheckerService子類中,實現下面代碼塊顯示的createSession()和onGetSuggestions()方法,
@Override public Session createSession() { return new AndroidSpellCheckerSession(); }private static class AndroidSpellCheckerSession extends Session { @Override public SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) {SuggestionsInfo suggestionsInfo;... // look up suggestions for TextInforeturn suggestionsInfo;} }?
注意onGetSuggestions(TextInfo,int)的輸入參數textInfo包含了一個單詞。此方法返回一個包含建議單詞的SuggestionsInfo對象。這個方法的實現能訪問你自定義的詞典和任何工具類來提取和排列建議單詞。
對于句子級別的檢查,你可以實現能接受TextInfo數組的onGetSuggestionsMultiple()方法。
3. 在AndroidManifest.xml注冊拼寫檢查器服務
為了實現你的子類,你需要在你的manifest文件中聲明的你拼寫檢查器服務。這個聲明指定了application、service和定義用于控制設置界面的Activity的元數據文件。這有一個例子:
<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-dataandroid:name="android.view.textservice.scs"android:resource="@xml/spellchecker" /></service></application> </manifest>?
注意這個服務必須要求有android.permission.BIND_TEXT_SERVICE權限,以確保只有系統能綁定到這個服務。
4. 創建一個元數據XML資源文件
最后一步,為你的拼寫檢查器創建一個元數據文件用來定義設置拼寫檢查器的Activity。元數據文件也可以為拼寫檢查器定義子類型。把這個文件放置在manifest中指定的位置。
在下面的例子中,spellchecker.xml元數據文件指定了SpellCheckerSettingsActivity作為設置Activity,并且包含了子類型來定義拼寫檢查器可以處理的語言區域。
?
現在,你的拼寫檢查器服務就可以為你的應用程序(例如你的IME)工作了。
知識精粹:為多個句子添加批量處理
為了更快、更精準的拼寫檢查,Android4.1加入了讓客戶端一次處理多個句子的API。
在單次調用時,為了讓多個句子支持句子級別的檢查,只需要重寫和實現onGetSentenceSuggestionsMultiple()這個接口就可以了,就像下面顯示的:
private static class AndroidSpellCheckerSession extends Session { @Override public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(TextInfo[] textInfo, int suggestionsLimit) {SentenceSuggestionsInfo[] sentenceSuggestionsInfos;... // look up suggestions for each TextInforeturn sentenceSuggestionsInfos} }?
在這種情況下,textInfo是一個TextInfo數組,每一個textInfo都含有一個句子。這個方法把每一個句子的建議語句的長度和偏移作為一個SentenceSuggestionsInfo返回。
文檔和例子
如果你想學習更多關于如何使用拼寫檢查器的API,請查看這些文檔和例子:
1. 拼寫檢查器框架API指南——一個涵蓋了拼寫檢查器客戶端和服務端API的開發指南。
2. SampleSpellCheckerService例子程序——幫助你對拼寫檢查器服務入門。
你可以在/samples/android-15/SpellChecker/SampleSpellCheckerService找到這個程序。
3. HelloSpellChecker例子程序——一個使用拼寫檢查器的基本程序。
你可以在/samples/android-15/SpellChecker/HelloSpellChecker找到這個程序。
為了學習如何下載Android SDK的例子程序,請看Samples。
?
轉載于:https://www.cnblogs.com/tamer/archive/2012/08/17/2644411.html
總結
以上是生活随笔為你收集整理的[Google Android] Creating Your Own Spelling Checker Service的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvc HtmlHelper
- 下一篇: Aspose Cell设置Excel单元