蔡方達
(1.上海微系統(tǒng)與信息技術研究所 上海200050;2.上??萍即髮W 信息學院,上海201210)
面向安卓模擬器的自動化交互的設計與實現(xiàn)
蔡方達1,2
(1.上海微系統(tǒng)與信息技術研究所 上海200050;2.上??萍即髮W 信息學院,上海201210)
安卓移動操作系統(tǒng)目前是普及范圍最廣的移動手機平臺之一。其獨特的通過手勢動作來進行人機交互的方式很大程度上降低了人們使用應用軟件的難度。但于此同時,由于界面的變化需要由使用者的手勢動作來控制,人機交互實施的時間效率并不高。因此,提供一套能通過程序自動控制安卓應用的技術尤為有意義。本文提出了一項面向安卓模擬器的自動化人機交互解決方案。該方案基于安卓模擬器的命令行工具技術,設計并實現(xiàn)一套可編程人機交互控制接口。通過該技術,用戶能更加便捷、自動地模擬真實用戶手勢的效果,從而提供一種自動化地與安卓或移動應用進行界面交互的途經(jīng)。
安卓模擬器;自動化;人機交互;界面控制
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
安卓移動操作系統(tǒng)目前是普及范圍最廣的移動手機操作系統(tǒng)[1-5]。安卓模擬器是谷歌官方提供的一種應用運行環(huán)境,該環(huán)境可以部署在用戶的個人計算機中。利用安卓模擬器,用戶即使沒有手機硬件設備,也能在模擬器中使用移動應用程序。但是,在使用應用的過程中,用戶仍然需要使用鼠標滑動、點擊等操作來使用應用,并不能便捷地以一定的順序自動執(zhí)行需要一系列手勢動作能帶來的效果[6]。本文所提出的系統(tǒng),基于安卓模擬器,利用其終端特性,提供了一套編程接口。用戶可以使用所提供的編程接口來模擬安卓支持的所有手勢操作效果。
谷歌官方為了使安卓應用開發(fā)者能夠方便地在各類安卓版本中測試應用,提供了安卓模擬器。該模擬器,需要通過谷歌官方提供的安卓集成開發(fā)環(huán)境中的安卓虛擬設備管理器來創(chuàng)建。該工具可運行于通用個人計算機中,對現(xiàn)有的主流個人計算機操作系統(tǒng),如Windows、Linux、OSX等都提供支持。通過該工具可以設置所創(chuàng)建安卓模擬器的屏幕大小、所占內(nèi)存大小、閃存大小、安卓鏡像系統(tǒng)版本、所基于的底層抽象二進制接口類型等。對面向英特爾底層二進制接口編譯的系統(tǒng),還提供可選的硬件圖像加速功能來提升性能。
當用戶點擊打開創(chuàng)建完成的安卓模擬器,則界面會顯示基于QEMU模擬器的安卓系統(tǒng)[7-8]。用戶通過鼠標的點擊、長按、不同方向的滑動來模擬用戶手勢使用系統(tǒng)功能。所支持的功能包括除一部分僅在物理安卓手機上才存在的傳感器外一切的功能,包括應用下載及使用、網(wǎng)絡訪問及地理位置模擬、系統(tǒng)參數(shù)設置等。
安卓模擬器的使用者除了能通過鼠標操作來使用外,還能通過安卓集成開發(fā)工具中提供的命令行工具集來使用模擬器。在所提供的命令行工具集中,各類用于不同目的的命令行工具。舉例來說,Emulator命令可以以模擬器名字為索引啟動或停止指定的安卓模擬器,或者列出當前已創(chuàng)建的模擬器及它們當前的運行狀態(tài)。不僅如此,該命令還能模擬應用在真實的物理條件中的情況,比如可以設置無線網(wǎng)絡時間延遲、指定GPS位置信息等。
在這些眾多支持的命令行工具中,有一項未在安卓官方文檔中詳細描述,但事實存在的命令工具。該工具的名稱是input。通過該工具,用戶可以觸發(fā)一些手勢動作才能有的效果,比如點擊,滑動,截屏和進入主界面快捷鍵等[9-11]。值得注意的是,雖然通過該命令行工具可以僅通過鍵盤命令,不需要鼠標操作,來實現(xiàn)手勢效果,但由于每條命令需要手工輸入,因此使用命令行工具的時間效率仍不及鼠標操作。
接口所能提供的功能,應當能完全模擬用戶能夠做到的所有手勢[12-13]。因此,接口需要提供的功能需要包括點擊、滑動、輸入文字和回到主界面等。
點擊功能細化。用戶點擊分為兩種,一種為快速點擊屏幕,另一種為長按屏幕。由于長按屏幕的時間難以量化,因此接口需要支持長按任意時間的效果。為達到此目的,點擊功能接口需要支持在屏幕上的任意一點,點擊任意時間長度。
滑動功能細化。用戶的滑動屏幕動作,可以抽象為以屏幕中的任意一點作為起點,再以屏幕中的任意一點作為終點,手指從起點滑動到終點。但在實際的移動設備使用過程中,用戶滑動實際需要達到的效果通常是從左至右滑動、從右至左滑動、從上至下滑動、從下只上滑動。為平衡實際中的使用情況和理論上可能出現(xiàn)的所有滑動情況,滑動功能因包括主流的四個方向上的滑動接口,同時提供從屏幕上任意一點滑動至屏幕上另一點的功能。除此以外,在實際使用過程中,人工的手指滑動是需要消耗時間的,因此對上述每一種滑動策略,都要能設定動作完成時間。動作完成時間的設置應當接受任意值。
文字輸入功能細化。用戶使用屏幕的一個可能情況是在可輸入的文本框中輸入內(nèi)容。雖然在界面沒有文本框的情況下,輸入內(nèi)容不會產(chǎn)生任何效果,但本文認為該功能也是十分重要的。這類情況發(fā)生的上下文環(huán)境是,當通過點擊功能所提供的接口點擊了屏幕中的輸入框,屏幕的關注點此時將變成輸入框。這時輸入文字的話,這些內(nèi)容就會出現(xiàn)在文本框中產(chǎn)生意義。也就是說,該功能與點擊功能一同考慮時,便會產(chǎn)生意義。因此,需要提供輸入文字功能接口,接口的輸入?yún)?shù)僅需為預期輸入的文本信息即可。
重要快捷鍵功能。部分移動設備中已成為事實標準的常用的快捷鍵也是不可或缺的功能,應當被支持。這類功能包括回到主菜單功能、截屏功能、屏幕解鎖功能?;氐街鞑藛谓涌趹斈茉谄聊惶幵谌魏螚l件下時,觸發(fā)該接口屏幕隨即回到主菜單。截屏功能接口應當能獲取接口調用時當前屏幕的界面情況,以圖片的形式保存。保存的目錄應當作為參數(shù)由功能接口的使用者來提供。屏幕解鎖功能,應使得已鎖屏的安卓系統(tǒng)重新回到能夠自由使用的狀態(tài)。并且在已解鎖的情況下,觸發(fā)屏幕解鎖功能不會帶來負面效果。
依照對應實現(xiàn)功能的細化分析,相應接口的接口簽名及接口之間的依賴關系可總結,如圖所示。
其中shell()接口接受一條命令行指令,該命令行為具體的一個手勢動作終端命令。為防止某動作持續(xù)過長仍不結束,設置了一項超時參數(shù)。當執(zhí)行時間超時,則該指令自動結束,之后執(zhí)行下一條指令。
tap()命令代表點擊事件的使用,用戶應當能通過制定屏幕上的任意位置和點擊事件持續(xù)的時間來決定點擊事件的特點。其中點擊位置應由某種數(shù)據(jù)數(shù)據(jù)結構來表示,比如元組數(shù)據(jù)結構。通過指定屏幕中的橫縱坐標來精確地指定屏幕中的位置。
和滑動相關的接口設計為5種,它們分別為swipe ()、swipeLeft()、swipeRight()、swipeUp () 和swipeDown()。 Swipe()接口應當作為一種通用的接口來實現(xiàn)。該接口應當指定滑動動作的起始點和終止點,再附加整個過程需要消耗的時間。其中起始點和終止點可以用元組的形式,每個元組元素用橫縱坐標的值來表示位置。其余的四項的接口,是出于便利起見,基于第一個通用接口實現(xiàn)的。額外實現(xiàn)向左滑動、向右滑動、向上滑動、向下滑動的有點在于,這些是最常用的功能。為最常用的功能提供捷徑,可以為加快用戶編寫控制界面腳本帶來好處。但值得注意的是,每個動作的起點和終點,需要通過在實現(xiàn)的過程中測試決定。
inputText()、screencap()、goHome()、unlockScreen()分別實現(xiàn)了一些其他重要的功能。inputText需要接受一段字符串文本作為需要在屏幕關注點直接顯示的內(nèi)容信息。screencap的調用不要參數(shù),效果為直接調用命令行來實現(xiàn)截屏。goHome的調用同樣并不需要參數(shù),只需要通過相應命令行來實現(xiàn)。unlockScreen也一樣,該接口的調用不需要參數(shù),通過調用相應命令行來實現(xiàn)。
圖1 接口架構層次
對于編程接口的實現(xiàn),才用了主流腳本語言Python語言來實現(xiàn)以上接口[14-15]。各個接口的實現(xiàn)模式為,先向接口傳入?yún)?shù),接口實現(xiàn)中再根據(jù)參數(shù)構造命令,再調用命令行接口講該命令實施。于是,用戶不需要知道具體的模擬器命令,僅僅通過調用腳本接口函數(shù),就可以實現(xiàn)安卓模擬器界面的自動化控制。具體的接口簽名如下所示:
在滑動接口的實現(xiàn)中,需要通過試驗來得出的最有效滑動參數(shù)。不失一般性,選擇從左至右滑動接口作為樣例。首先需要確定的參數(shù)是起點和終點的位置如何確定。在確定這兩個值的過程中,有兩種解決策略。一種是通過絕對位置從左端滑動到右端。這種方案的好處是,坐標點的參數(shù)不要通過計算得出,可以節(jié)省計算時間和功耗。但是,這種方案有重要的缺陷。安卓模擬器可以支持不同的屏幕大小,多樣性是安卓的特點。而如果采用決定定位的方式,則對不同屏幕需要設置不同的坐標點,維護成本過高。因此,本文采取另一種策略,即根據(jù)屏幕的比例來計算出起點和終點的位置。具體算法如下:
在該算法中,引入了邊緣的概念。邊緣的起點設置為全寬的十分之一,左右兩端皆有,算出的點作為縱坐標。而橫坐標為屏幕高度的二分之一。通過這種方式,對任意屏幕都能有效的實現(xiàn)從左至右滑動。這種方法有易于維護,并對多樣的屏幕具備拓展性等優(yōu)勢。
對于滑動時間的選取,經(jīng)過測試,得出200 ms是最佳值。超過該值的話,一個動作需要花費不必要的更多的時間來完成。而如果選擇更小的值的話,則由于安卓模擬器自身的特性,會使得該動作無法順利完成。
經(jīng)過在安卓模擬器中的實際測試使用,我們驗證了以上實現(xiàn)的有效性。由于每個接口的調用背后的實現(xiàn)都是基于安卓模擬器命令行的,因此每個接口相互之間都是阻塞的,從而實現(xiàn)了順序地執(zhí)行每個動作。于是可以成功有效地在安卓模擬器中自動化地模擬用戶的人工人機交互過程。
本文設計并實現(xiàn)了一套基于安卓模擬器,可用于自動化模擬用戶手勢操作的編程接口。該技術可被用于模擬一系列復雜的用戶手勢操作。相比單純使用命令行工具,該技術封裝了命令行底層。使得基于安卓的人機交互可編程在技術上更透明,在實現(xiàn)上更便捷。
[1]蔡森.多終端數(shù)字皮影交互系統(tǒng)的設計與實現(xiàn)[J].電子設計工程,2016(10):187-190.
[2]高瑞華.基于APK文件抓取系統(tǒng)的匹配模塊設計[J].電子設計工程,2016(3):47-49.
[3]王君,趙躍華.主動防御技術在Android隱私保護中的應用[J].電子設計工程,2015(20):79-81.
[4]劉彬彬,李永忠,舒俊.Android平臺下的病毒原理分析及其防御技術研究[J].電子設計工程,2013(4):40-43.
[5]周俊,李永忠,楊立華.基于Android平臺的藏文輸入法設計與實現(xiàn)[J].電子設計工程,2015(16):79-81.
[6]賀建英,袁小艷,唐青松.Android系統(tǒng)下人機交互解鎖屏功能的應用研究 [J].電子設計工程,2016(13):4-6.
[7]林鑫.基于沙盒的Android惡意軟件檢測技術研究[J].電子設計工程,2016(12):48-50.
[8]曹歡歡,李永忠.Android平臺下的安全檢測軟件的設計與實現(xiàn)[J].電子設計工程,2015(12):141-144.
[9]陳義,馬云林.基于視覺的手勢識別技術在車載主機上的應用[J].電子設計工程,2016(8):141-144.
[10]李楊韜,禹東川,靳來鵬,等.基于LeapMotion手勢識別的認知訓練系統(tǒng)的設計和實現(xiàn)[J].電子設計工程,2016(9):12-14.
[11]張金龍.基于Memory-link協(xié)議的人機交互系統(tǒng)的可靠性設計[J].電子設計工程,2012(11):157-159.
[12]王秋茸.一種面向可適應性的嵌入式設備HCI方案[J].電子設計工程,2011(2):137-140.
[13]王昶輝,蔡晴.DSP嵌入式系統(tǒng)人機接口設計[J].電子設計工程,2009(10):100-101.
[14]何浩,李滔.基于Python的Android應用GUI的開發(fā)[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—),男,上海人,碩士研究生。研究方向:信息安全、移動計算。