Android 平台提供拼字檢查工具架構,可讓您在應用程式中實作和存取拼字檢查功能。這個架構為 Android 平台提供的其中一個文字服務 API。
如要在應用程式中使用這個架構,您必須建立特殊類型的 Android 服務,用來產生拼字檢查工具工作階段物件。這個工作階段物件會根據您提供的文字,傳回拼字檢查工具產生的拼字建議。
拼字檢查工具生命週期
下圖顯示拼字檢查工具服務的生命週期:

圖 1. 拼字檢查工具服務生命週期。
為了啟動拼字檢查功能,應用程式會先實作拼字檢查工具服務。應用程式中的用戶端 (例如活動或個別 UI 元素) 會向服務要求拼字檢查工具工作階段,然後使用這個工作階段取得文字建議。用戶端終止作業時,就會關閉拼字檢查工具工作階段。應用程式隨時可視需要關閉拼字檢查工具服務。
實作拼字檢查工具服務
如要在應用程式中使用拼字檢查工具架構,請新增拼字檢查工具服務元件,包括工作階段物件定義。您也可以在應用程式中加入用於控制設定的選用活動。此外,您還必須新增用於描述拼字檢查工具服務的 XML 中繼資料檔案,並在資訊清單檔案中加入適當元素。
拼字檢查工具類別
請使用下列類別定義服務和工作階段物件:
-
SpellCheckerService
的子類別 SpellCheckerService
會實作Service
類別和拼字檢查工具架構介面。在子類別中,您必須實作以下方法:createSession()
- 這個工廠方法會向要求進行拼字檢查的用戶端傳回
SpellCheckerService.Session
物件。
請參考拼字檢查工具服務範例應用程式,進一步瞭解如何實作這個類別。
-
SpellCheckerService.Session
的實作 - 拼字檢查工具服務會將這個物件提供給用戶端,讓用戶端將文字傳遞給拼字檢查工具並取得建議。在這個類別中,您必須實作以下方法:
-
onCreate()
- 系統會呼叫這個方法來回應
createSession()
。在這個方法中,您可以根據目前的語言代碼等資訊初始化SpellCheckerService.Session
物件。 -
onGetSentenceSuggestionsMultiple()
- 實際執行拼字檢查。這個方法會傳回
SentenceSuggestionsInfo
的陣列,當中會針對所傳遞的句子提供建議。
您可以視需要實作
onCancel()
(處理拼字檢查取消要求)、onGetSuggestions()
(處理字詞建議要求) 或onGetSuggestionsMultiple()
(處理批次字詞建議要求)。請參考拼字檢查工具用戶端範例應用程式,進一步瞭解如何實作這個類別。
-
注意:實作拼字檢查功能時,請確保所有面向皆具有非同步和執行緒安全性質。不同核心上執行的不同執行緒可能會同步呼叫同一拼字檢查工具。SpellCheckerService
和 SpellCheckerService.Session
會自動處理這項作業。
拼字檢查工具資訊清單和中繼資料
除了程式碼之外,您也必須為拼字檢查工具提供適當的資訊清單檔案和中繼資料檔案。
資訊清單檔案定義了應用程式、服務以及用於控制設定的活動,如以下程式碼片段所示:
<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
會自動使用拼字檢查工具,因此採用 TextView
檢視的應用程式可自動受惠於拼字檢查功能,如以下螢幕截圖所示:


圖 2. TextView 中的拼字檢查功能。
但在其他情況下,您也可能會想直接與拼字檢查工具服務互動。下圖顯示與拼字檢查工具服務互動的控制流程:

圖 3. 與拼字檢查工具服務互動。
Android 開放原始碼計畫中的 LatinIME 輸入法編輯器包含拼字檢查範例。