Android:Creating Your Own Spelling Checker Service(建立拼字檢查服務)

來源:互聯網
上載者:User
文章目錄
  • 1. Create a spelling checker service class
  • 2. Implement the required methods
  • 3. Register the spelling checker service in AndroidManifest.xml
  • 4. Create a metadata XML resource file
  • Bonus points: Add batch processing of multiple sentences
  • Documents and samples
16 August 2012

Creating Your Own Spelling Checker Service

Posted by Satoshi Kataoka and Ken Wakasa of the Android text input engineering team

The Spelling Checker framework improves the text-input experience on Android by helping the user quickly identify and correct spelling errors. When an app uses the spelling checker framework, the user can see a red underline beneath misspelled or unrecognized
words so that the user can correct mistakes instantly by choosing a suggestion from a dropdown list.

If you are an input method editor (IME) developer, the Spelling Checker framework gives you a great way to provide an even better experience for your users. You can add your own spelling checker service to your IME to provide consistent spelling error corrections
from your own custom dictionary. Your spelling checker can recognize and suggest corrections for the vocabularies that are most important to your users, and if your language is not supported by the built-in spelling checker, you can provide a spelling checker
for that language.

The
Spelling Checker APIs let you create your own spelling checker service with minimal steps. The framework manages the interaction between your spelling checker service and a text input field. In this post we’ll give you an overview of how to implement a
spelling checker service. For details, take a look at the Spelling Checker Framework API Guide.

1. Create a spelling checker service class

To create a spelling checker service, the first step is to create a spelling checker service class that extendsandroid.service.textservice.SpellCheckerService.

For a working example of a spelling checker, you may want to take a look at the
SampleSpellCheckerService
class in the SpellChecker sample app, available from the Samples download package in the Android SDK.

2. Implement the required methods

Next, in your subclass of
SpellCheckerService, implement the methods
createSession() and
onGetSuggestions(), as shown in the following code snippet:

@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 TextInfo        return suggestionsInfo;    }      }

Note that the input argument textInfo of
onGetSuggestions(TextInfo, int) contains a single word. The method returns suggestions for that word as aSuggestionsInfo object. The implementation of this
method can access your custom dictionary and any utility classes for extracting and ranking suggestions.

For sentence-level checking, you can also implement
onGetSuggestionsMultiple(), which accepts an array of TextInfo.

3. Register the spelling checker service in AndroidManifest.xml

In addition to implementing your subclass, you need to declare the spelling checker service in your manifest file. The declaration specifies the application, the service, and a metadata file that defines the Activity to use for controlling settings. Here’s
an example:

<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>    </application></manifest>

Notice that the service must request the permission
android.permission.BIND_TEXT_SERVICE to ensure that only the system binds to the service.

4. Create a metadata XML resource file

Last, create a metadata file for your spelling checker to define the Activity to use for controlling spelling checker settings. The metadata file can also define subtypes for the spelling checker. Place the file in the location specified in the
element of the spelling checker declaration in the manifest file.

In the example below, the metadata file spellchecker.xml specifies the settings Activity asSpellCheckerSettingsActivity and includes subtypes to define the locales that the spelling checker can handle.

<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" /></spell-checker>

That’s it! Your spelling checker service is now available to client applications such as your IME.

Bonus points: Add batch processing of multiple sentences

http://android-developers.blogspot.com/2012/08/creating-your-own-spelling-checker.html

For faster, more accurate spell-checking,
Android 4.1 (Jelly Bean) introduces APIs that let clients pass multiple sentences to your spelling checker at once.

To support sentence-level checking for multiple sentences in a single call, just override and implement the methodonGetSentenceSuggestionsMultiple(),
as shown below.

private static class AndroidSpellCheckerSession extends Session {                     @Override                                                                    public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(          TextInfo[] textInfo, int suggestionsLimit) {        SentenceSuggestionsInfo[] sentenceSuggestionsInfos;        ... // look up suggestions for each TextInfo        return sentenceSuggestionsInfos    }      }

In this case, textInfo is an array of
TextInfo, each of which holds a sentence. The method returns lengths and offsets of suggestions for each sentence as aSentenceSuggestionsInfo object.

Documents and samples

If you’d like to learn more about how to use the spelling checker APIs, take a look at these documents and samples:

  • Spelling Checker Framework API Guide — a developer guide covering the Spelling Checker API for clients and services.
  • SampleSpellCheckerService sample app — helps you get started with your spelling checker service.
    • You can find the app at /samples/android-15/SpellChecker/SampleSpellCheckerService in the Samples download.
  • HelloSpellChecker sample app — a basic app that uses a spelling checker.
    • You can find the app at /samples/android-15/SpellChecker/HelloSpellChecker in the Samples download.

To learn how to download sample apps for the Android SDK, see
Samples.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.