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 |
<meta-data |
注意想要使用该服务的组件需要使用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输入法编辑器里也有一个拼写检查的例子。
Android基础知识之拼写检查框架的更多相关文章
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- Android基础知识(一)
前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...
- Android基础知识巩固:关于PendingIntent和广播
平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Android基础知识之API等级介绍
原文:http://android.eoe.cn/topic/android_sdk :可以让开发者通过一个表示API级别的整数来描述程序在android平台上的兼容性,系统会将与系统本身提供的API ...
- 看看android基础知识,谁帮我作答
无论怎么着,了解一点android的基本知识还是有必要的,就当开阔一些自己的眼界吧. .. . android的四大功能组件是_activity_,_service_,_BroadcastReceiv ...
- Android基础知识学习
IPC (Inter-Process Communication) 意思是: 进程间的通信,是指两个进程之间进行数据交换的过程. Android中如何开启多进程呢? 只需要给四大组件(Activit ...
- android基础知识:SharedPreferences和PreferenceActivity
1.android文件存储 对Android系统了解的都知道,Android系统有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvi ...
随机推荐
- MySQL查看当前用户、存储引擎、日志
#查看MySQL的当前用户 mysql> SELECT USER(); +----------------+ | USER() | +----------------+ | root@local ...
- MVC+WCF框架下广告位管理——文件上传
广告位是站点中不可缺少的内容之中的一个.也是能直接给我们站点带来经济收益的内容之中的一个. 好的广告位不仅不会强宾压主,而会为我们的站点锦上添花.起到画龙点睛的作用.因此设计好广告位也是开发过程中一大 ...
- 发现一个ReactNative大神
传送门: RN使用技巧:http://www.jianshu.com/p/2f575cc35780 RN 进阶技巧:http://www.jianshu.com/p/b877115fff1b 亮点有: ...
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6138288.html 在上一篇博文我们提到,分页有三种方法.其中,第三种是我们最常用的.然而,在实际应用过程中 ...
- sqlserver 表中记录生成insert,可以加条件,可以生成建表语句
sqlserver 表中记录生成insert,可以加条件,可以生成建表语句 create PROCEDURE [sp_getinsert] ( ) , --如果非默认架构,可以加上架构名 例如:sch ...
- 〖Linux〗gun screen 配置文件
screen 默认使用 bash shell,一般情况下screen只用于android build,tmux则是我的日常使用多终端管理工具. # Default Shell shell " ...
- RPC远程调用概念 && demo实例
RPC是指远程过程调用,直观说法就是A通过网络调用B的过程方法. 也就是说两台serverA.B,一个应用部署在Aserver上,想要调用Bserver上应用提供的函数/方法,因为不在一个内存空间,不 ...
- 7、redis之使用spring集成commons-pool来操作常见数据类型
环境的搭建参见:http://www.cnblogs.com/yangzhilong/p/4729857.html 下面直接贴具体的测试代码: package com.yzl; import java ...
- MYSQL数据库注释
//修改注释 alter table user comment = '我要修改注释'; //新建表设定表注释及解释说明. create table AuthUser( ID ) primary key ...
- std::accumulate使用的一个小细节
今天使用std::accumulate模板函数的时候出现了一个错误,特此记录一下. #include <iostream> #include <numeric> int mai ...