Android getevent/senevent

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章