文本和输入:拼写检查器

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


要在应用程序中使用框架,您可以创建一种特殊类型的Android服务,生成拼写检查器会话对象。 根据您提供的文本,会话对象返回由拼写检查器生成的拼写建议。



一、拼写检查生命周期

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


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


要启动拼写检查,您的应用程序将开始执行拼写检查服务。 您的应用程序中的客户端(如活动或单个UI元素)会从服务中请求拼写检查器会话,然后使用会话获取文本建议。 当客户端终止其操作时,它关闭其拼写检查器会话。 如有必要,您的应用程序可以随时关闭拼写检查服务。



二、实施拼写检查服务

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


一)、拼写检查类

使用以下类定义服务和会话对象:

1、SpellCheckerService的子类

SpellCheckerService同时实现了Service类和拼写检查框架界面。 在您的子类中,您必须实现以下方法:


createSession()

将SpellCheckerService.Session对象返回给要进行拼写检查的客户端的工厂方法。


请参阅拼写检查服务示例应用程序,以了解有关实现此类的更多信息。


2、一个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输入法编辑器还包含拼写检查的示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值