2018年12月30日 星期日

21-sendevent

上回咱們說到怎麼利用 getevent 得到 Android 的輸入事件,本次就來說明如何使用 sendevent 模擬輸入的動作。

2018年12月23日 星期日

20-getevent

getevent 是一個和模擬輸入無直接相關的指令,但若看官想知道當滑動 Android 觸控面板時是由那些輸入事件所構成,或想記錄點擊、滑動等動作以回放這些操作,那 getevent 將是一種選擇。

2018年12月8日 星期六

19-Level up !!! input draganddrop

拖放 (Drag and Drop) 是種很常見的操作,可是咱們曾介紹的 MonkeyDevice.draginput swipe 都難以漂亮地模擬此動作,並非不能,只是實現的效果非常不理想且醜陋。不過從 Android 8.0.0 開始,有一新的 input 成員能夠較為優雅地實現此模擬了,它便是 input draganddrop

2018年12月2日 星期日

18-input三兄弟swipe

input swipe 的功能和 MonkeyDevice.drag 類似,都是模擬手指滑動螢幕的行為,其使用方式也雷同:
語法 input swipe <x1> <y1> <x2> <y2> [ duration(ms) ]
說明 功能與 MonkeyDevice.drag (tuple start, tuple end, float duration, integer steps) 類似。
duration 預設為 300 ms。

2018年11月5日 星期一

17-input三兄弟tap

語法 input tap <x> <y>
說明 與 MonkeyDevice.touch (<x>, <y>, MonkeyDevice.DOWN_AND_UP) 的行為一樣。

16-input三兄弟keyevent

語法 input keyevent [--longpress] <key code number or name>
說明 與 MonkeyDevice.press(<key name>, MonkeyDevice.DOWN_AND_UP) 的行為類似。
Key name,可查閱 KeyEvent 裡以 KEYCODE_ 為開頭的名稱。
Key code number,可查閱 KeyEvent 裡以 KEYCODE_ 為開頭的名稱的 constant value。
--longpress 此參數目前無法達成長壓按鍵的效果。

咱們直接看例子:

2018年11月4日 星期日

15-輕量級的輸入模擬 (input)

相比於 MonkeyDevice 提供的 press、touch 和 drag 三種方法,本喵更常使用 shell 提供的 input 來執行對應的動作。其實若單以行為的可控制性來說,MonkeyDevice 是勝過 shell input 的,比如 shell input tap 只能執行「點一下螢幕」這樣的動作,而 MonkeyDevice.touch() 還可以模擬「長壓螢幕」的行為。但之所以選擇 shell input,是因為 monkeyrunner 太常丟出 exception 了,雖然這可以藉由良好的封裝來重複嘗試執行,但設計上畢竟較繁複,執行測試時也會花費更多時間在不必要的 try...exception 上;另一個理由則是本喵被分配的工作剛好 shell input 便足夠勝任了,所以除非有必要,否則本喵是傾向使用簡單的方式來達成目的。