input
adbshell input keyevent [--longpress] ...(Default: keyboard)
使用input命令发送keycode的事件(其对应值在KeyEvent.java中对应),但些事件会把down和up一起发送。可加入--longpress来模拟长按事件。
sendevent
adbshell sendevent device type code value
此处的code不再是keyevent.java中的keycode值,其为kernel中对应的值。在mt6737中为mtk-kpd.kl文件中的值.此样式如下。
key 113MUTE
key 116POWER
key 211FOCUS
power键对应的就是116,若要向设备发送一个power键的down事件,则使用
adb shell sendevent/dev/input/event2 1 116 1
adb shell sendevent/dev/input/event2 0 0 0
若要向设备发送一个power键的up事件,则使用
adb shell sendevent/dev/input/event2 1 116 0
adb shell sendevent/dev/input/event2 0 0 0
PS:一定要一起发这两条,第一条是发了power键的down事件,第二条为其sync状态。
/dev/input/event2:为其设备节点,可通getevent进行查看。
以上命令为mt6737上的命令,不同的项目,命令可能不同,可通过用getevent命令,进行一次真实的按键,来获取其对应的device,type,code ,value值。
monkey
monkey:用来模拟猴子的乱点,也可指定其具体的操作。(本文只介绍keyevent事件的模拟)
adb shell monkey -f script count
script:monkey执行的操作脚本,脚本最基本格式如下:
start data >> //表明之后的为操作数据
DispatchKey(0,0,0,24,0,0,0,0)//keycode=24的键的down事件
DispatchKey(0,0,1,24,0,0,0,0) //keycode=24的键的up事件
DispatchKey(long downtime,long eventtime,int action, int code ,int reapeat,int metaState, int device,int scancode);
若downtime,eventtime <=0 ,则使用命令解析时的时间做为downtime,eventime,以SystemClock.uptimeMillis为基准。