zoukankan      html  css  js  c++  java
  • Android基础知识之拼写检查框架

    原文:http://android.eoe.cn/topic/android_sdk

    拼写检查器框架

    Android平台提供了一个拼写检查器的框架,来方便你在你的应用中实现并使用拼写检查。这个框架是Android平台提供的文字服务API之一。

    要在你的应用中使用该框架,你需要创建一个特殊的AndroidService来生成一个拼写检查器会话对象。这个会话对象会基于你提供的文字,来返回拼写检查器生成的拼写建议。

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

    http://developer.android.com/resources/articles/images/spellcheck_lifecycle.png

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

    为了初始化拼写检查,你的应用必须实现它自己的拼写检查器服务。你应用中的客户端,比如activity,或是独立的UI元素,需要从服务中获取一个拼写检查器会话,然后使用该会话为文本获取拼写建议。当一个客户端停止它的活动时,它结束自己的会话。你的应用可以在必要时,随时关闭拼写检查器服务。

    为了在你的应用中使用拼写检查器框架,你需要添加一个包含会话对象实现的拼写检查器服务组件。你也可以为你的应用增加一个可选的activity来控制设置。你也必须添加一个元数据xml文件来描述拼写检查器服务,并在manifest文件中增加适当的元素。

    拼写检查类。

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

    一个SpellCheckerService的子类。
    :SpellCheckerService实现了Service类和拼写检查器框架接口,在你的子类中,你必须实现以下方法:

    :createSession())
    ::这是一个工厂方法,它为客户端返回一个 SpellCheckerService.Session 对象来实现拼写检查。
    :查看Spell Checker Service 样例应用,来学习更多实现该类的知识。

    一个SpellCheckerService.Session的实现。
    :这是一个拼写检查器服务给客户提供的对象,来让他们把文字传递给拼写检查器并接收提示。在这个类里,你必须实现以下方法:
    :onCreate())
    ::这是createSession())的系统回调函数,在这个方法中,你可以基于本地化以及其它内容,初始化SpellCheckerService.Session对象。
    :[http://developer.android.com/reference/android/service/textservice/SpellCheckerService.Session.html#onGetSentenceSuggestionsMultipleandroid.view.textservice.TextInfo[](, int) onGetSentenceSuggestionsMultiple()]
    ::该函数真正来进行拼写检查,它返回一个SentenceSuggestionsInfo数组,该数组包含了传入句子的提示。
    :你也可以实现一些可选的函数,比如onCancel())是用来处理取消拼写检查的请求,int) onGetSuggestions()是用来处理一个词提示请求,或者int) onGetSuggestionsMultiple()是用来处理一组词的提示的请求。

    :查看Spell Checker Service 例子应用来学习更多。

    注意:你必须把拼写检查设为异步和线程安全的。一个拼写检查器可能被在不同核心上的不同的线程同时调用。SpellCheckerService 和 SpellCheckerService.Session自动实现了上述要求。

    拼写检查器的声明和元数据

    除了代码以外,你需要为拼写检查器提供合适的manifest文件和元数据文件。

    mainifestt文件定义了应用,服务,以及用于设置的活动,如下示:






     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
            <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>
    

    注意想要使用该服务的组件需要使用BIND_TEXT_SERVICE的许可来确保系统绑定该服务。该服务的定义中还确定了spellchecker.xml元数据文件,这将在下一节给出。

    元数据文件spellchecker.xml的内容如下:

    元数据里确定了拼写检查器用于控制设置的activity。它还定义了拼写检查器的子类;在这种情况下,子类定义了拼写检查器适用的地区。

    使用TextView视图应用自动获取拼写检查,因为TextView会自动使用一个拼写检查器。如下截图所示:

    http://developer.android.com/resources/articles/images/textview_spellcheck_screenshot_2.png

    图2.TextView中的拼写检查

    然而在其它情况下,你可能也想要直接与拼写检查器服务进行交流。如下图表是直接与拼写检查器交流的控制流程:

    http://developer.android.com/resources/articles/images/spellcheck_client_flow.png

    图3.与一个拼写检查器服务交互。

    Spell Checker Service 例子应用,将教你如何与一个拼写检查服务进行交互。Android Open Source Project里的LatinIME输入法编辑器里也有一个拼写检查的例子。

  • 相关阅读:
    第几天?
    农历02__资料
    农历01
    VC6_预编译头
    QWebEngine_C++_交互
    Qt570_CentOS64x64_02
    Qt570_CentOS64x64_01
    QWebEngineView_CssVariables
    Windows__书
    Win7SDK
  • 原文地址:https://www.cnblogs.com/vus520/p/3152655.html
Copyright © 2011-2022 走看看