拼字檢查工具架構

Android 平台提供拼字檢查工具架構,可讓您在應用程式中實作和存取拼字檢查工具。此架構是文字服務 API 之一。

如要在應用程式中使用這個架構,請建立可產生拼字檢查工具「工作階段」物件的 Android 服務。這個工作階段物件會根據您提供的文字,傳回拼字檢查工具產生的拼字建議。

拼字檢查工具生命週期

下圖顯示拼字檢查工具服務的生命週期:

顯示拼字檢查工具服務的生命週期的圖片
圖 1. 拼字檢查工具服務生命週期。

為了啟動拼字檢查工具,應用程式會實作拼字檢查工具服務。應用程式中的用戶端 (例如活動或個別 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>

中繼資料會指定拼字檢查工具用來控制設定的活動。同時也定義拼字檢查工具的子類型。在本例中,子類型定義了拼字檢查工具能夠處理的語言代碼。

透過用戶端存取拼字檢查工具服務

使用 TextViewEditText 檢視畫面的應用程式會自動受益於拼字檢查工具,因為 TextView 會自動使用拼字檢查工具:

這張圖片顯示 EditText 中如何自動啟用拼字檢查工具
圖 2. EditText 中的拼字檢查功能。

不過,在其他情況下,您可能需要直接與拼字檢查工具服務互動。下圖顯示與拼字檢查工具服務互動的控制流程:

顯示拼字檢查工具服務互動圖
圖 3. 與拼字檢查工具服務互動。

Android 開放原始碼專案中的 LatinIME 輸入法編輯器包含拼字檢查範例。