Android 平台提供拼字檢查工具架構,可讓您在應用程式中實作和存取拼字檢查工具。此架構是文字服務 API 之一。
如要在應用程式中使用這個架構,請建立可產生拼字檢查工具「工作階段」物件的 Android 服務。這個工作階段物件會根據您提供的文字,傳回拼字檢查工具產生的拼字建議。
拼字檢查工具生命週期
下圖顯示拼字檢查工具服務的生命週期:
為了啟動拼字檢查工具,應用程式會實作拼字檢查工具服務。應用程式中的用戶端 (例如活動或個別 UI 元素) 向服務要求拼字檢查工具工作階段,然後使用工作階段取得文字建議。用戶端終止作業時,會關閉拼字檢查工具工作階段。如有需要,應用程式可隨時關閉拼字檢查工具服務。
實作拼字檢查工具服務
如要在應用程式中使用拼字檢查工具架構,請新增包含工作階段物件定義的拼字檢查工具服務元件。您也可以在應用程式中新增可控制設定的選用活動。新增描述拼字檢查工具服務的 XML 中繼資料檔案,並在資訊清單檔案中加入適當的元素。
拼字檢查工具類別
請使用下列類別定義服務和工作階段物件:
-
SpellCheckerService
的子類別SpellCheckerService
會實作Service
類別和拼字檢查工具架構介面。在子類別中實作下列方法:createSession()
- 這個工廠方法會將
SpellCheckerService.Session
物件傳回至要檢查拼字的用戶端。
-
SpellCheckerService.Session
的實作- 拼字檢查工具服務提供給用戶端的物件,讓客戶將文字傳送至拼字檢查工具並獲得建議。在這個類別中,實作下列方法:
onCreate()
- 由系統呼叫以回應
createSession()
。在這個方法中,您可以根據目前的語言代碼和其他詳細資料初始化SpellCheckerService.Session
物件。 onGetSentenceSuggestionsMultiple()
- 實際執行拼字檢查。這個方法會傳回
SentenceSuggestionsInfo
的陣列,其中包含傳送至其語句的建議。
您可以視需要實作
onCancel()
,處理拼字檢查取消要求;onGetSuggestions()
處理字詞建議要求;或實作onGetSuggestionsMultiple()
,處理批次字詞建議要求。
拼字檢查工具資訊清單和中繼資料
除了程式碼外,還要為拼字檢查工具提供適當的資訊清單檔案和中繼資料檔案。
資訊清單檔案定義了應用程式、服務,以及控制設定的活動,如以下範例所示:
<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>
要使用服務的元件必須要求 BIND_TEXT_SERVICE
權限,確保只有系統繫結至服務。服務的定義也會指定 spellchecker.xml
中繼資料檔案,詳情請參閱下一節。
中繼資料檔案 spellchecker.xml
包含下列 XML:
<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>
中繼資料會指定拼字檢查工具用來控制設定的活動。同時也定義拼字檢查工具的子類型。在本例中,子類型定義了拼字檢查工具能夠處理的語言代碼。
透過用戶端存取拼字檢查工具服務
使用 TextView
和 EditText
檢視畫面的應用程式會自動受益於拼字檢查工具,因為 TextView
會自動使用拼字檢查工具:
不過,在其他情況下,您可能需要直接與拼字檢查工具服務互動。下圖顯示與拼字檢查工具服務互動的控制流程:
Android 開放原始碼專案中的 LatinIME 輸入法編輯器包含拼字檢查範例。