getevent&sendevent 是android系統下的一個工具,可以模擬多種按鍵和觸屏操作,產生的是raw event,raw event經過event hub處理產生最終的gesture事件。
=== getevent ===
getevent 監控當前的事件,鼠標事件,按鍵事件,拖動滑動等
dd device 1: /dev/input/event0
name: "qwerty2"
/dev/input/event0: 0001 001e 00000001
/dev/input/event0: 0001 001e 00000000
其中/dev/input/event0是device的名字 0001是type, 001e是鍵碼, 最後一個根據type不同而不同
比如上面的倒數第二條就是按下a鍵的keydown,最後一個是按下a的keyup
具體的type,code,value的定義可以在源碼/frameworks/base/core/java/android/view/KeyEvent.java中找到
=== sendevent ===
命令格式2:adb shell sendevent [device] [type] [code] [value]
發送時間,格式和上面的一樣,需要注意的是在get中code顯示的是十六進制,而send中需要用十進制,例如
# sendevent /dev/input/event0 1 5 1
這個命令就是發送數字4的keydown消息,所以在屏幕上就會一直打印出很多個4(因爲沒有發送keyup)
如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu鍵
adb shell sendevent /dev/input/event0 1 229 0 代表按下鬆開menu鍵
說明:上述的命令需組合使用
另外所知道的命令如下:
Key Name CODE
MENU 229
HOME 102
BACK (back button) 158
CALL (call button) 231
END (end call button) 107
2. 發送鼠標事件(Touch):
命令格式:adb shell sendevent [device] [type] [code] [value]
情況1:在某座標點上touch
如在屏幕的x座標爲40,y座標爲210的點上touch一下,命令如下
adb shell sendevent /dev/input/event0 3 0 40
adb shell sendevent /dev/input/event0 3 1 210
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0 //it must have
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0 //it must have
注:以上六組命令必須配合使用,缺一不可
情況2:模擬滑動軌跡(可下載並採用aPaint軟件進行試驗)
如下例是在aPaint軟件上畫出一條開始於(100,200),止於(108,200)的水平直線
adb shell sendevent /dev/input/event0 3 0 100 //start from point (100,200)
adb shell sendevent /dev/input/event0 3 1 200
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 3 0 101 //step to point (101,200)
adb shell sendevent /dev/input/event0 0 0 0
…………………… //must list each step, here just skip
adb shell sendevent /dev/input/event0 3 0 108 //end point(108,200)
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0
參考:
http://topic.csdn.net/u/20100326/17/1f0fc5a1-3bd2-4294-aa35-1bcb73357aa3.html
http://www.51testing.com/html/65/n-215865-2.html