APP下载

面向安卓模拟器的自动化交互的设计与实现

2017-10-12蔡方达

电子设计工程 2017年19期
关键词:命令行电子设计安卓

蔡方达

(1.上海微系统与信息技术研究所 上海200050;2.上海科技大学 信息学院,上海201210)

面向安卓模拟器的自动化交互的设计与实现

蔡方达1,2

(1.上海微系统与信息技术研究所 上海200050;2.上海科技大学 信息学院,上海201210)

安卓移动操作系统目前是普及范围最广的移动手机平台之一。其独特的通过手势动作来进行人机交互的方式很大程度上降低了人们使用应用软件的难度。但于此同时,由于界面的变化需要由使用者的手势动作来控制,人机交互实施的时间效率并不高。因此,提供一套能通过程序自动控制安卓应用的技术尤为有意义。本文提出了一项面向安卓模拟器的自动化人机交互解决方案。该方案基于安卓模拟器的命令行工具技术,设计并实现一套可编程人机交互控制接口。通过该技术,用户能更加便捷、自动地模拟真实用户手势的效果,从而提供一种自动化地与安卓或移动应用进行界面交互的途经。

安卓模拟器;自动化;人机交互;界面控制

Abstract:Android mobile operating system is currently one of the most popular mobile phone platform.The way of human-computer interoperation,that use phones via gestures,largely make it easy to utilize software applications.While at the same time,it consumes much time to process these gestures since the changes of screen user interface are made by gestures of users.Therefore,it is very significant to provide a sort of technology that can automatically process a series of commands to manipulate android applications.This paper presents a solution to automatically operate user interface of android emulator.By leveraging this technology,users will be more convenient and automatically apply effects of gestures from real users to operating user interface.As a result,users now have a way to automatically manipulate android operating system or android applications.

Key words:Android emulator; automation; human-computer interoperation; user interface control

安卓移动操作系统目前是普及范围最广的移动手机操作系统[1-5]。安卓模拟器是谷歌官方提供的一种应用运行环境,该环境可以部署在用户的个人计算机中。利用安卓模拟器,用户即使没有手机硬件设备,也能在模拟器中使用移动应用程序。但是,在使用应用的过程中,用户仍然需要使用鼠标滑动、点击等操作来使用应用,并不能便捷地以一定的顺序自动执行需要一系列手势动作能带来的效果[6]。本文所提出的系统,基于安卓模拟器,利用其终端特性,提供了一套编程接口。用户可以使用所提供的编程接口来模拟安卓支持的所有手势操作效果。

1 安卓模拟器及相关技术

1.1 安卓模拟器

谷歌官方为了使安卓应用开发者能够方便地在各类安卓版本中测试应用,提供了安卓模拟器。该模拟器,需要通过谷歌官方提供的安卓集成开发环境中的安卓虚拟设备管理器来创建。该工具可运行于通用个人计算机中,对现有的主流个人计算机操作系统,如Windows、Linux、OSX等都提供支持。通过该工具可以设置所创建安卓模拟器的屏幕大小、所占内存大小、闪存大小、安卓镜像系统版本、所基于的底层抽象二进制接口类型等。对面向英特尔底层二进制接口编译的系统,还提供可选的硬件图像加速功能来提升性能。

当用户点击打开创建完成的安卓模拟器,则界面会显示基于QEMU模拟器的安卓系统[7-8]。用户通过鼠标的点击、长按、不同方向的滑动来模拟用户手势使用系统功能。所支持的功能包括除一部分仅在物理安卓手机上才存在的传感器外一切的功能,包括应用下载及使用、网络访问及地理位置模拟、系统参数设置等。

1.2 模拟器命令行工具集

安卓模拟器的使用者除了能通过鼠标操作来使用外,还能通过安卓集成开发工具中提供的命令行工具集来使用模拟器。在所提供的命令行工具集中,各类用于不同目的的命令行工具。举例来说,Emulator命令可以以模拟器名字为索引启动或停止指定的安卓模拟器,或者列出当前已创建的模拟器及它们当前的运行状态。不仅如此,该命令还能模拟应用在真实的物理条件中的情况,比如可以设置无线网络时间延迟、指定GPS位置信息等。

在这些众多支持的命令行工具中,有一项未在安卓官方文档中详细描述,但事实存在的命令工具。该工具的名称是input。通过该工具,用户可以触发一些手势动作才能有的效果,比如点击,滑动,截屏和进入主界面快捷键等[9-11]。值得注意的是,虽然通过该命令行工具可以仅通过键盘命令,不需要鼠标操作,来实现手势效果,但由于每条命令需要手工输入,因此使用命令行工具的时间效率仍不及鼠标操作。

2 人机交互编程接口设计

2.1 接口功能需求分析

接口所能提供的功能,应当能完全模拟用户能够做到的所有手势[12-13]。因此,接口需要提供的功能需要包括点击、滑动、输入文字和回到主界面等。

点击功能细化。用户点击分为两种,一种为快速点击屏幕,另一种为长按屏幕。由于长按屏幕的时间难以量化,因此接口需要支持长按任意时间的效果。为达到此目的,点击功能接口需要支持在屏幕上的任意一点,点击任意时间长度。

滑动功能细化。用户的滑动屏幕动作,可以抽象为以屏幕中的任意一点作为起点,再以屏幕中的任意一点作为终点,手指从起点滑动到终点。但在实际的移动设备使用过程中,用户滑动实际需要达到的效果通常是从左至右滑动、从右至左滑动、从上至下滑动、从下只上滑动。为平衡实际中的使用情况和理论上可能出现的所有滑动情况,滑动功能因包括主流的四个方向上的滑动接口,同时提供从屏幕上任意一点滑动至屏幕上另一点的功能。除此以外,在实际使用过程中,人工的手指滑动是需要消耗时间的,因此对上述每一种滑动策略,都要能设定动作完成时间。动作完成时间的设置应当接受任意值。

文字输入功能细化。用户使用屏幕的一个可能情况是在可输入的文本框中输入内容。虽然在界面没有文本框的情况下,输入内容不会产生任何效果,但本文认为该功能也是十分重要的。这类情况发生的上下文环境是,当通过点击功能所提供的接口点击了屏幕中的输入框,屏幕的关注点此时将变成输入框。这时输入文字的话,这些内容就会出现在文本框中产生意义。也就是说,该功能与点击功能一同考虑时,便会产生意义。因此,需要提供输入文字功能接口,接口的输入参数仅需为预期输入的文本信息即可。

重要快捷键功能。部分移动设备中已成为事实标准的常用的快捷键也是不可或缺的功能,应当被支持。这类功能包括回到主菜单功能、截屏功能、屏幕解锁功能。回到主菜单接口应当能在屏幕处在任何条件下时,触发该接口屏幕随即回到主菜单。截屏功能接口应当能获取接口调用时当前屏幕的界面情况,以图片的形式保存。保存的目录应当作为参数由功能接口的使用者来提供。屏幕解锁功能,应使得已锁屏的安卓系统重新回到能够自由使用的状态。并且在已解锁的情况下,触发屏幕解锁功能不会带来负面效果。

2.2 接口层次结构

依照对应实现功能的细化分析,相应接口的接口签名及接口之间的依赖关系可总结,如图所示。

其中shell()接口接受一条命令行指令,该命令行为具体的一个手势动作终端命令。为防止某动作持续过长仍不结束,设置了一项超时参数。当执行时间超时,则该指令自动结束,之后执行下一条指令。

tap()命令代表点击事件的使用,用户应当能通过制定屏幕上的任意位置和点击事件持续的时间来决定点击事件的特点。其中点击位置应由某种数据数据结构来表示,比如元组数据结构。通过指定屏幕中的横纵坐标来精确地指定屏幕中的位置。

和滑动相关的接口设计为5种,它们分别为swipe ()、swipeLeft()、swipeRight()、swipeUp () 和swipeDown()。 Swipe()接口应当作为一种通用的接口来实现。该接口应当指定滑动动作的起始点和终止点,再附加整个过程需要消耗的时间。其中起始点和终止点可以用元组的形式,每个元组元素用横纵坐标的值来表示位置。其余的四项的接口,是出于便利起见,基于第一个通用接口实现的。额外实现向左滑动、向右滑动、向上滑动、向下滑动的有点在于,这些是最常用的功能。为最常用的功能提供捷径,可以为加快用户编写控制界面脚本带来好处。但值得注意的是,每个动作的起点和终点,需要通过在实现的过程中测试决定。

inputText()、screencap()、goHome()、unlockScreen()分别实现了一些其他重要的功能。inputText需要接受一段字符串文本作为需要在屏幕关注点直接显示的内容信息。screencap的调用不要参数,效果为直接调用命令行来实现截屏。goHome的调用同样并不需要参数,只需要通过相应命令行来实现。unlockScreen也一样,该接口的调用不需要参数,通过调用相应命令行来实现。

图1 接口架构层次

3 人机交互编程接口实现

对于编程接口的实现,才用了主流脚本语言Python语言来实现以上接口[14-15]。各个接口的实现模式为,先向接口传入参数,接口实现中再根据参数构造命令,再调用命令行接口讲该命令实施。于是,用户不需要知道具体的模拟器命令,仅仅通过调用脚本接口函数,就可以实现安卓模拟器界面的自动化控制。具体的接口签名如下所示:

在滑动接口的实现中,需要通过试验来得出的最有效滑动参数。不失一般性,选择从左至右滑动接口作为样例。首先需要确定的参数是起点和终点的位置如何确定。在确定这两个值的过程中,有两种解决策略。一种是通过绝对位置从左端滑动到右端。这种方案的好处是,坐标点的参数不要通过计算得出,可以节省计算时间和功耗。但是,这种方案有重要的缺陷。安卓模拟器可以支持不同的屏幕大小,多样性是安卓的特点。而如果采用决定定位的方式,则对不同屏幕需要设置不同的坐标点,维护成本过高。因此,本文采取另一种策略,即根据屏幕的比例来计算出起点和终点的位置。具体算法如下:

在该算法中,引入了边缘的概念。边缘的起点设置为全宽的十分之一,左右两端皆有,算出的点作为纵坐标。而横坐标为屏幕高度的二分之一。通过这种方式,对任意屏幕都能有效的实现从左至右滑动。这种方法有易于维护,并对多样的屏幕具备拓展性等优势。

对于滑动时间的选取,经过测试,得出200 ms是最佳值。超过该值的话,一个动作需要花费不必要的更多的时间来完成。而如果选择更小的值的话,则由于安卓模拟器自身的特性,会使得该动作无法顺利完成。

经过在安卓模拟器中的实际测试使用,我们验证了以上实现的有效性。由于每个接口的调用背后的实现都是基于安卓模拟器命令行的,因此每个接口相互之间都是阻塞的,从而实现了顺序地执行每个动作。于是可以成功有效地在安卓模拟器中自动化地模拟用户的人工人机交互过程。

4 结 论

本文设计并实现了一套基于安卓模拟器,可用于自动化模拟用户手势操作的编程接口。该技术可被用于模拟一系列复杂的用户手势操作。相比单纯使用命令行工具,该技术封装了命令行底层。使得基于安卓的人机交互可编程在技术上更透明,在实现上更便捷。

[1]蔡森.多终端数字皮影交互系统的设计与实现[J].电子设计工程,2016(10):187-190.

[2]高瑞华.基于APK文件抓取系统的匹配模块设计[J].电子设计工程,2016(3):47-49.

[3]王君,赵跃华.主动防御技术在Android隐私保护中的应用[J].电子设计工程,2015(20):79-81.

[4]刘彬彬,李永忠,舒俊.Android平台下的病毒原理分析及其防御技术研究[J].电子设计工程,2013(4):40-43.

[5]周俊,李永忠,杨立华.基于Android平台的藏文输入法设计与实现[J].电子设计工程,2015(16):79-81.

[6]贺建英,袁小艳,唐青松.Android系统下人机交互解锁屏功能的应用研究 [J].电子设计工程,2016(13):4-6.

[7]林鑫.基于沙盒的Android恶意软件检测技术研究[J].电子设计工程,2016(12):48-50.

[8]曹欢欢,李永忠.Android平台下的安全检测软件的设计与实现[J].电子设计工程,2015(12):141-144.

[9]陈义,马云林.基于视觉的手势识别技术在车载主机上的应用[J].电子设计工程,2016(8):141-144.

[10]李杨韬,禹东川,靳来鹏,等.基于LeapMotion手势识别的认知训练系统的设计和实现[J].电子设计工程,2016(9):12-14.

[11]张金龙.基于Memory-link协议的人机交互系统的可靠性设计[J].电子设计工程,2012(11):157-159.

[12]王秋茸.一种面向可适应性的嵌入式设备HCI方案[J].电子设计工程,2011(2):137-140.

[13]王昶辉,蔡晴.DSP嵌入式系统人机接口设计[J].电子设计工程,2009(10):100-101.

[14]何浩,李滔.基于Python的Android应用GUI的开发[J].电子设计工程,2013(9):63-65.

[15]何惠英,王兆合,王小宇,等.用Python语言跨平台分析处理电子表格 [J].电子设计工程,2011(9):67-70.

Design and implementation of automatic user interface operation technology based on Android emulator

CAI Fang-da1,2
(1.Shanghai Institute of Microsystem and Information Technology, Shanghai200050,China;2.School of Information Science and Technology of Shanghai Tech.University, Shanghai201210,China)

TN06

A

1674-6236(2017)19-0071-04

2016-09-23稿件编号201609209

蔡方达(1990—),男,上海人,硕士研究生。研究方向:信息安全、移动计算。

猜你喜欢

命令行电子设计安卓
iPhone不卡的秘密曝光:安卓也能享受
高职机电专业学生电子设计竞赛心理问题调查与分析
一种基于docker集群的自动评价虚拟命令行实验终端构建及其在类Unix系统教学中的应用
文物表情包
Windows 10新版CMD更新
基于Multisim仿真软件的三人表决器电子设计制作——以中学生创新能力培养为例
基于Linux的OnlineJudge在线提交环境的搭建
一种基于安卓系统的手机侧抓包分析方法
Linux系统下GRIB2格式GFS资料转为GRIB1格式的方法详解
降压型直流开关稳压电源——2016江苏省大学生电子设计竞赛A题解析