当前位置:   article > 正文

adb shell input 及event_adb shell input keyevent 26

adb shell input keyevent 26

adb shell input以及event可以模拟用户点击。

可以用来写自动化测试脚本。


关于adb shell input的用法:

Usage: input [<source>] <command> [<arg>...]

The sources are:
      trackball
      joystick
      touchnavigation
      mouse
      keyboard
      gamepad
      touchpad
      dpad
      stylus
      touchscreen

The commands and default sources are:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)

注意text不可以输入中文。

adb shell input tap x y可以用来点击屏幕

adb shell input keyevent 26 可以用来点击物理键

但是真正需要按住,也就是press 物理键的时候,以上的内容就无法handle了。

这个时候就需要event来帮忙。

Android 自带了 getevent 和 sendevent,分别用于获取设备报送的事件和模拟产生事件,前者用于辅助设备驱动的验证,后者用于模拟事件进行上层应用的验证。

adb shell getevent -h
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
    -t: show time stamps
    -n: don't print newlines
    -s: print switch states for given bits
    -S: print all switch states
    -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)
    -d: show HID descriptor, if available
    -p: show possible events (errs, dev, name, pos. events)
    -i: show all device info and possible events
    -l: label event types and names in plain text
    -q: quiet (clear verbosity mask)
    -c: print given number of events then exit
    -r: print rate events are received

举例说明:

现在想要模拟按住音量-键

先 adb shell getevent,手动点击音量-

屏幕上显示:

/dev/input/event1: 0001 0072 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 0072 00000000
/dev/input/event1: 0000 0000 00000000

前两行是按下,后两行是弹起。

现在运行一下

adb shell sendevent /dev/input/event2 1 $((0x72)) 1

adb shell sendevent /dev/input/event2 0 0 0

发现是不是按住音量- 已经生效了laugh.gifuploading.4e448015.gif转存失败重新上传取消laugh.gifuploading.4e448015.gif转存失败重新上传取消大笑

再运行一下

adb shell sendevent /dev/input/event2 1 $((0x72)) 0

adb shell sendevent /dev/input/event2 0 0 0

发现是不是松开音量- 已经生效了laugh.gifuploading.4e448015.gif转存失败重新上传取消laugh.gifuploading.4e448015.gif转存失败重新上传取消大笑

 

 

 

 

 

好的功能要靠自己开发。现在再实验一下help里提到的其他内容吧tongue.gifuploading.4e448015.gif转存失败重新上传取消tongue.gifuploading.4e448015.gif转存失败重新上传取消吐舌头

如果需要实现双击操作,可以先记录数据文件到taprecord。

在adb shell 下执行 dd if=/dev/input/event0 of=/sdcard/taprecord或者直接cat /dev/input/event0>/sdcard/taprecord

具体是event几可以通过上面介绍的getevent来获知。

然后操作手机,ctrl+C退出即可

最后执行adb shell "for i in `seq 1 2`; do dd if=/sdcard/taprecord of=/dev/input/event0;sleep 0.1; done" 就会发现设备已经双击了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56443
推荐阅读
相关标签
  

闽ICP备14008679号