基于IBinder机制实现的自动输入方法及装置制造方法

文档序号:6536561阅读:175来源:国知局
基于IBinder机制实现的自动输入方法及装置制造方法
【专利摘要】本发明公开了一种基于IBinder机制实现的自动输入方法及装置,所述方法包括激活当前的Acitivity,使目标编辑框控件获得焦点;在IME服务中实现静态方法;在通用IService服务中实现IBinder接口;在IBinder接口中获得自定义类的this指针;在自定义类中构造输入方法;通过输入方法接收来自外界的输入内容;在输入方法中调用静态方法获得IME服务的实例ICS;在实例ICS非空时,获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC;将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。本发明方法提升了自动化测试效率与精准度。
【专利说明】基于IBinder机制实现的自动输入方法及装置
【技术领域】
[0001]本发明涉及一种Android系统的自动化测试过程中实现编辑框自动输入的方法及系统,尤其是一种基于IBinder机制实现的自动输入方法及系统。属于Android系统的自动化测试【技术领域】。
【背景技术】
[0002]随着移动终端的普及,人们对移动终端的需求也越来越多、越来越高,对于移动终端制造商而言,移动终端的测试也越来越复杂,随之而出现的是越来越多的自动化测试工具,如中国专利申请号为201110066300.6的发明专利申请,公开了“一种基于Android的自动化测试方法”,其技术特点是通过集成Android内部shell指令原理调用Android的monkey方法,实现在手机侧的通过设备模拟人工操作,形成可靠的软件稳定性测试体系,将各种测试程序进行编码,测试时通过调用各个测试程序进行,提高测试效率,解决了现有技术需借助计算机进行测试且需人工监视导致效率低的问题,针对的是测试上存在的问题,并没有涉及到自动化测试自动输入的相关问题。
[0003]而目前市面上的自动化测试工具,在自动化测试输入的过程中,主要有两种方式:一种是基于Instrumentation的自动输入;另一种是基于输入法的自动输入;但这两种方式在自动输入过程中都存在局限与缺陷:基于Instrumentation的测试工具无法跨应用(跨进程)输入;基于输入法的自动输入需要模拟人的点击、选词、取词等操作,速度慢、不准确。

【发明内容】

[0004]本发明的目的是为了解决上述现有技术的缺陷,提供一种可以提升自动化测试效率与精准度基于IBinder机制实现的自动输入方法。
[0005]本发明的另一目的在于提供一种基于IBinder机制实现的自动输入装置。
[0006]本发明的目的可以通过采取如下技术方案达到:
[0007]基于IBinder机制实现的自动输入方法,其特征在于:所述方法在Android系统的自动化测试过程中实现,包括以下步骤:
[0008]S1、激活当前的Acitivity窗口,使目标编辑框控件获得焦点;
[0009]S2、在 IME 服务 InputChineseService 中实现静态方法 getlnstance ;
[0010]S3、在通用IService服务中实现IBinder接口 ;
[0011]S4、在IBinder接口中获得自定义类RemoteBinder的this指针;
[0012]S5、在自定义类RemoteBinder中构造输入方法SendRemotelnfo ;
[0013]S6、通过输入方法SendRemotelnfo接收来自外界的输入内容;
[0014]S7、在输入方法SendRemotelnfo中调用静态方法getlnstance获得InputChineseService 的实例 ICS ;
[0015]S8、判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC ;
[0016]S9、将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
[0017]具体的,步骤S2所述IME服务InputChineseService从输入法服务类InputMethodService 继承。
[0018]具体的,步骤S3所述通用IService服务从Service组件继承。
[0019]具体的,步骤S8所述获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC通过调用ICS的公有方法getCurrentlnputConnection获取。
[0020]具体的,所述输入方法SendRemotelnfo接收的输入内容为中文、英文或符号。
[0021]本发明的另一目的可以通过采取如下技术方案达到:
[0022]基于IBinder机制实现的自动输入装置,其特征在于:所述装置在Android系统的自动化测试过程中实现,包括:
[0023]激活模块,用于激活当前的Acitivity窗口,使目标编辑框控件获得焦点;
[0024]静态方法实现模块,用于IME服务InputChineseService中实现静态方法getlnstance ;
[0025]IBinder接口实现模块,用于在通用IService服务中实现IBinder接口 ;
[0026]自定义类的this指针获得模块,用于在IBinder接口中获得自定义类RemoteBinder 的 this 指针;
[0027]输入方法构造模块,用于在自定义类RemoteBinder中构造输入方法SendRemotelnfo ;
[0028]输入内容接收模块,用于通过输入方法SendRemotelnfo接收来自外界的输入内容;
[0029]实例ICS获得模块,用于在输入方法SendRemotelnfo中调用静态方法getlnstance 获得 InputChineseService 的实例 ICS ;
[0030]判断模块,用于判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC ;
[0031]内容传递模块,用于将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
[0032]具体的,所述静态方法实现模块、实例ICS获得模块和判断模块中的IME服务InputChineseService 从输入法服务类 InputMethodService 继承。
[0033]具体的,所述IBinder接口实现模块和自定义类的this指针获得模块中的通用IService服务从Service组件继承。
[0034]具体的,所述判断模块中的获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC通过调用ICS的公有方法getCurrentlnputConnection获取。
[0035]具体的,所述输入方法构造模块、输入内容接收模块和实例ICS获得模块中的输入方法SendRemotelnfo接收的输入内容为中文、英文或符号。
[0036]本发明相对于现有技术具有如下的有益效果:
[0037]本发明方法及装置将IME (Input Method Editor,输入法编辑器)与Service的IBinder机制(IBinder接口是能进行远程操作对象的一个基接口,定义了为在提供进程间和跨进程间的调用时提供高性能的轻量级远程调用的核心部分,该接口描述了与远程对象进行交互的抽象协议)结合,解决基于Instrumentation的测试工具无法跨应用(跨进程)输入和基于输入法的自动输入速度慢、不准确的问题,提升了自动化测试效率与精准度。
【专利附图】

【附图说明】
[0038]图1为本发明实施例的基于IBinder机制实现的自动输入方法的流程示意图。
[0039]图2为本发明实施例的基于IBinder机制实现的自动输入装置结构框图。
【具体实施方式】
[0040]实施例1:
[0041]在设备的Android系统中,键盘事件由WindowManagerService (窗口管理服务)统一管理,然后以消息的形式分发给应用程序;Android系统启动的时候,SystemServer首先会启动 WindowManagerService,接着 WindowManagerService 通过启动 InputManager (输入管理器)来监控键盘事件。当InputManager监控到键盘输入事件时,它需要把这个键盘消息分发给当前激活的Activity窗口,此时,当前激活的Activity窗口需要主动注册一个接收键盘消息的连接通道到InputManager中去,InputManager才能把这个键盘消息分发给它处理。在整个 IMF (Input Method Framework,输入法框架)中,InputMethodManager(输入法管理类)是其中的核心API,负责与应用程序的交互与调度,核心思想是获得此消息的连接通道 IC (InputConnection)。
[0042]如图1所示 ,本实施例的基于IBinder机制实现的自动输入方法,具体包括以下步骤:
[0043]S1、激活当前的Acitivity窗口,使目标编辑框控件获得焦点;
[0044]S2、从 InputMethodService(输入法服务类)继承一个 IME(Input Method Editor,输入法编辑器)服务InputChineseService,在InputChineseService中实现静态方法getlnstance,如下:
[0045]

i诤态 //法 gctlnslancc():

public static InputChincscScrvicc gcllnstancc() {

if(this.1CS != null )

return ICS;

return null;


}
[0046]S3、从Service组件继承通用IService服务,实现IBinder接口 ;
[0047]S4、在IBinder接口中获得自定义类RemoteBinder的this指针;
[0048]S5、在自定义类 RemoteBinder 中构造输入方法 SendRemotelnfo (String CH_EN),如下:[0049]
输入力,法 ScndRcmotcInfo(Slring CH_EN):
//CH—EN:外界输入的中文、英文或者符号
public boolean ScndRcmolcIni'o(String CH_EN) {
//单例模式
υ>

InputChineseService ICS = InputChineseService.getlnstance();
if(ICS !=null) {
[0050]

InputConnection IC =丨 CS.getCurrcnUnputConnectionO;'

if(IC != null) !

return IC.comniitTcxl(CH_EN, 0);

}

}

} catch (Exception c) {
c.printStackTracc();

`
}

return I i\s<.}
[0051]S6、通过输入方法SendRemotelnfo接收来自外界的输入内容;
[0052]S7、在输入方法SendRemotelnfo中调用静态方法getlnstance获得InputChineseService 的实例 ICS ;
[0053]S8、判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,调用ICS的公有方法getCurrentlnputConnection获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC (InputConnection);
[0054]S9、将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
[0055]实施例2:
[0056]如图2所示,本实施例的基于IBinder机制实现的自动输入装置包括激活模块、静态方法实现模块、IBinder接口实现模块、自定义类的this指针获得模块、输入方法构造模块、输入内容接收模块、实例ICS获得模块、判断模块和内容传递模块,其中:
[0057]激活模块,用于激活当前的Acitivity窗口,使目标编辑框控件获得焦点;
[0058]静态方法实现模块,用于在IME服务InputChineseService中实现静态方法getlnstance ;所述 IME 服务 InputChineseService 从输入法服务类 InputMethodService继承;
[0059]IBinder接口实现模块,用于在通用IService服务中实现IBinder接口 ;所述通用IService服务从Service组件继承
[0060]自定义类的this指针获得模块,用于在IBinder接口中获得自定义类RemoteBinder 的 this 指针;
[0061]输入方法构造模块,用于在自定义类RemoteBinder中构造输入方法SendRemotelnfo ;
[0062]输入内容接收模块,用于通过输入方法SendRemotelnfo接收来自外界的输入内容;所述输入方法SendRemotelnfo接收的输入内容为中文、英文或符号;
[0063]实例ICS获得模块,用于在输入方法SendRemotelnfo中调用静态方法getlnstance 获得 InputChineseService 的实例 ICS ;
[0064]判断模块,用于判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,调用ICS的公有方法getCurrentlnputConnection获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC ;
[0065]内容传递模块,用于将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
[0066]本实施例中使用Android系统的设备可以是手机、电子书、PDA、人机交互终端或其他具有显示功能的手持式终端设备。
[0067]另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。
[0068]以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。
【权利要求】
1.基于IBinder机制实现的自动输入方法,其特征在于:所述方法在Android系统的自动化测试过程中实现,包括以下步骤: 51、激活当前的Acitivity窗口,使目标编辑框控件获得焦点; 52、在IME 服务 InputChineseService 中实现静态方法 getlnstance ; 53、在通用IService服务中实现IBinder接口; 54、在IBinder接口中获得自定义类RemoteBinder的this指针; 55、在自定义类RemoteBinder中构造输入方法SendRemoteInfo; 56、通过输入方法SendRemoteInfo接收来自外界的输入内容; 57、在输入方法SendRemoteInfo中调用静态方法getlnstance获得InputChineseService 的实例 ICS ; 58、判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC ; 59、将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
2.根据权利要求1所述的基于IBinder机制实现的自动输入方法,其特征在于:步骤S2 所述 IME 服务 Inpu tChineseService 从输入法服务类 InputMethodService 继承。
3.根据权利要求1所述的基于IBinder机制实现的自动输入方法,其特征在于:步骤S3所述通用IService服务从Service组件继承。
4.根据权利要求1所述的基于IBinder机制实现的自动输入方法,其特征在于:步骤S8所述获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC通过调用ICS的公有方法 getCurrentInputConnection 获取。
5.根据权利要求1所述的基于IBinder机制实现的自动输入方法,其特征在于:所述输入方法SendRemoteInfo接收的输入内容为中文、英文或符号。
6.基于IBinder机制实现的自动输入装置,其特征在于:所述装置在Android系统的自动化测试过程中实现,包括: 激活模块,用于激活当前的Acitivity窗口,使目标编辑框控件获得焦点; 静态方法实现模块,用于IME服务InputChineseService中实现静态方法getlnstance ; IBinder接口实现模块,用于在通用IService服务中实现IBinder接口 ; 自定义类的this指针获得模块,用于在IBinder接口中获得自定义类RemoteBinder的this指针; 输入方法构造模块,用于在自定义类RemoteBinder中构造输入方法SendRemoteInfo ; 输入内容接收模块,用于通过输入方法SendRemoteInfo接收来自外界的输入内容; 实例ICS获得模块,用于在输入方法SendRemoteInfo中调用静态方法getlnstance获得 InputChineseService 的实例 ICS ; 判断模块,用于判断实例ICS是否为空,若是,在静态方法getlnstance中返回自身的引用;若否,获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC ; 内容传递模块,用于将接收到的内容传递给消息连接通道IC的commitText函数提交至当前获得焦点的编辑框控件,完成输入。
7.根据权利要求6所述的基于IBinder机制实现的自动输入装置,其特征在于:所述静态方法实现模块、实例ICS获得模块和判断模块中的IME服务InputChineseService从输入法服务类InputMethodService继承。
8.根据权利要求6所述的基于IBinder机制实现的自动输入装置,其特征在于:所述IBinder接口实现模块和自定义类的this指针获得模块中的通用IService服务从Service组件继承。
9.根据权利要求6所述的基于IBinder机制实现的自动输入装置,其特征在于:所述判断模块中的获取实例ICS与当前获得焦点的编辑框控件的消息连接通道IC通过调用ICS的公有方法 getCurrentInputConnection 获取。
10.根据权利要求6所述的基于IBinder机制实现的自动输入装置,其特征在于:所述输入方法构造模块、输入内容接收模块和实例ICS获得模块中的输入方法SendRemotelnfo接收的输入内容为中文 、英文或符号。
【文档编号】G06F9/44GK103761096SQ201410030702
【公开日】2014年4月30日 申请日期:2014年1月22日 优先权日:2014年1月22日
【发明者】杨远波, 李鹏 申请人:广东欧珀移动通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1