Android API Guides---Spelling Checker Framework

来源:互联网 发布:判断在数组里面 php 编辑:程序博客网 时间:2024/05/17 23:46

Spelling Checker Framework

Android平台提供了一个拼写检查器框架,可以让你实现,并在您的应用程序访问拼写检查。该框架是Android平台所提供的文本服务API之一。


要使用该框架在你的应用程序,您创建生成一个拼写检查器会话对象的一种特殊类型的Andr​​oid服务。根据您提供的文本,会话对象返回拼写检查器生成的拼写建议。


拼写检查器生命周期


下图显示了拼写检查器服务的生命周期:




图1.拼写检查器服务的生命周期。


要启动拼写检查,您的应用程序开始执行情况的拼写检查服务。客户在你的应用程序,如活动或个人的UI元素,从服务要求拼写检查器会话,然后使用会话来获取文本的建议。作为客户端终止,它将关闭其拼写检查器会话。如果需要的话,你的应用程序可以关闭在任何时候拼写检查服务。


实现一个拼写检查服务


要使用拼写检查器框架在你的应用程序,添加一个拼写检查器服务组件包括会话对象定义。您还可以添加到您的应用程序,控制设置可选的活动。你还必须添加描述拼写检查器服务的XML元数据文件,并添加相应的元素,你的清单文件。


拼写检查班


定义与以下类的服务和会话对象:


SpellCheckerService的子类
该SpellCheckerService同时实现了服务类和拼写检查器框架接口。在你的子类,则必须实现以下方法:
了createSession()
工厂方法返回一个对象SpellCheckerService.Session给想要做拼写检查的客户端。
见拼写检查器服务的示例应用程序,以了解更多有关实施这一类。


SpellCheckerService.Session的实施
拼写检查器的服务提供给客户的对象,让他们通过文字,拼写检查和接受建议。在这个类中,必须实现以下方法:
的onCreate()
由系统响应于了createSession()调用。在这种方法中,可以初始化基于当前的区域等等的SpellCheckerService.Session对象。
onGetSentenceSuggestionsMultiple()
执行实际的拼写检查。这个方法返回一个包含传递给它的判决意见SentenceSuggestionsInfo的数组。
或者,你可以实现onCancel(),其处理请求取消拼写检查,onGetSuggestions(),它可以处理一个字的建议要求,或onGetSuggestionsMultiple(),它处理字的建议请求批次。


见拼写检查器客户端示例应用程序,以了解更多有关实施这一类。


注意:您必须实施检验的异步和线程安全的法术的所有方面。拼写检查器可以同时通过在不同内核上运行不同的线程调用。该SpellCheckerService和SpellCheckerService.Session自动照顾这一点。


拼写检查清单和元数据


除了代码,您需要提供相应的清单文件和拼写检查的元数据文件。


manifest文件定义了应用程序,服务,以及用于控制设置,如下面的代码片段活动:

<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文字服务组件,以确保只有系统绑定到服务。服务定义还指定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输入法编辑器还包含拼写检查的一个例子。

0 0