keyevent事件的模拟三法

 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为基准。

你可能感兴趣的:(keyevent事件的模拟三法)