android平台输入法开发解析

android平台输入法开发解析

ID:6755240

大小:65.57 KB

页数:8页

时间:2018-01-24

android平台输入法开发解析_第1页
android平台输入法开发解析_第2页
android平台输入法开发解析_第3页
android平台输入法开发解析_第4页
android平台输入法开发解析_第5页
资源描述:

《android平台输入法开发解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Android平台输入法开发解析Android平台自1.5版本之后开放了输入法框架(InputMethodFramework,IMF),IMF是Android平台的特色设计。它的出现,为诞生不带实体键盘的设备提供了可能。同时,IMF开放了Android平台输入法的开发接口,为Android平台的输入法提供了可扩展性。本文首先介绍Android平台IMF的构成、工作机制和流程,以便广大开发者能够更好的理解Android平台是如何实现文字输入。接下来,将以一个简单的例子,介绍如何进行简单的输入法开发,开发者应该可以对An

2、droid平台的输入法开发形成一个初步的认识。1.Android平台IMF简介Android平台的IMF按照功能分为三个主要模块,分别为:客户端控件,输入法服务(IMMS),以及输入法应用(IME)。如果要深刻的理解和掌握Android平台的输入法开发技巧,那么必须要了解Android平台IMF内部各个模块之间的工作机制。客户端控件,是指具有文字编辑功能的系统控件(如EditText),是平台内部输入法应用人机交互的起点。输入法服务,是Android平台的底层基础服务之一,负责管理输入法,包括输入法的安装、注册、激活

3、等。输入法应用,则是指平台内预置,或者后续安装的输入法程序。三个模块间的交互关系如下:下面我们将分别介绍以上三个模块,并简要介绍各模块内主要使用的对象和服务。1.1客户端控件Android平台的客户端控件主要是TextView及其子类。客户端控件是输入法人机交互的起点。客户端控件与输入法服务和输入法应用都有交互操作。以EditText为例,当客户端控件接受到焦点时,控件启动输入法应用并显示键盘;而失去焦点时,则隐藏键盘。另外,EditText控件收到长按事件时,弹出输入法选择菜单。这类操作属于客户端控件与输入法服务间

4、的交互。此外,客户端控件还可以向输入法应用传递文本状态,包括光标位置、文本选择等;接受并显示输入法应用反馈的输入文字。这类交互属于客户端控件与输入法应用的交互。客户端控件对输入法服务和输入法应用的操作,都是通过对InputMethodManager实例的调用来实现的。InputMethodManager更像是一个供客户端控件使用API操作的集合,定义对输入法应用以及输入法服务的一系列操作。客户端控件会通过InputMethodManager.peekInstance()来获取唯一的实例。需要指出的是,各调用函数的具体

5、操作并不是在InputMethodManager中具体实现的。Android平台的输入法框架定义了IIputMethodManager接口和IIputMethodSession接口分别定义了对输入法服务和输入法应用的操作。而InputMethodManagerService和InputMethodService则分别对这两个接口进行了具体的实现。这样通过AIDL机制,客户端控件便可以跨进程的调用其他service内的实现。通过这样的机制,Android平台降低了输入法框架内各个模块间的耦合性,并且保证了输入法应用的可

6、扩展性。客户端无需知道使用的是那一款输入法,从而实现了简单直接的控制。另外还需要指出的,客户端控件通过IIputMethodSession对于输入法应用的交互是单向的,即只能向输入法应用传递信息,无法获取信息。客户端应用从输入法应用获取信息是通过InputConnection来实现的,在启动输入法时,InputConnection由客户端控件创建,并传递给输入法应用,由输入法应用调用,进行信息反馈。1.2输入法服务输入法服务作为平台底层的一项基础服务,用来管理输入法应用。输入法服务的主要工作由InputMethdoM

7、anagerService(IMMS)完成。下面简要的介绍输入法服务如何实现输入法的安装、切换。l输入法安装IMMS内部包含一个receiver,注册接收所有程序包安装、卸载的消息。当收到此类消息后,IMMS会通过系统的PackageManager查询所有声明为InputMethod的程序,并生成一个系统可用的输入法列表,供用户选择使用。l输入法切换当用户选择了一款输入法后,IMMS将此输入法的ID保存为系统的默认输入法ID。这里的ID是该输入法在IMMS内维护的可用输入法列表中的位置ID。当客户端通过InputMe

8、thodManager启动输入法应用时,IMMS将根据这个ID从输入法列表中取出输入法,并加载使用。1.3输入法应用输入法应用是具体处理用户输入行为的应用程序。为了能够在Android的输入法框架中良好的运行,所有的输入法应用都需要继承特定的service。Android平台的输入法框架为输入法应用定义了一个基类InputMethodServi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。