Android getevent/sendevent/input使用方法

来源:互联网 发布:java socket 聊天室 编辑:程序博客网 时间:2024/05/18 01:33

Android getevent/sendevent/input使用方法

  • Android geteventsendeventinput使用方法
    • getevent
    • sendevent
    • input

1.getevent

getevent旨在获取android设备的事件信息;

getevent源码alsp/system/core/toolbox/getevent.c,以及详细使用方法如下:

$adb shell getevent -hUsage: 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

获取event设备详细信息,硬件可能不同,信息可能不准确:

$adb shell cat /proc/bus/input/devices$adb shell getevent -i

显示格式为:device:type code value,即设备,事件类型,键值类别,具体数值;

具体定义可从kernel-3.18/include/linux/input.h中获得;

$adb shell getevent/dev/input/event6: 0002 0000 00000001/dev/input/event6: 0002 0006 00027506

举例获取power键值信息

$adb shell getevnet /dev/input/event20001 0074 00000001                              //按下0000 0000 000000000001 0074 00000000                              //抬起0000 0000 00000000$adb shell getevnet -l /dev/input/event2EV_KEY       KEY_POWER            DOWN          //按下EV_SYN       SYN_REPORT           00000000EV_KEY       KEY_POWER            UP            //抬起EV_SYN       SYN_REPORT           00000000

2.sendevent

sendevent可以向设备发送模拟事件,其中包括touch和keypress。

sendevent源码alsp/system/core/toolbox/sendevent.c,以及详细使用方法如下:

$adb shell sendevent -huse: sendevent device type code value

值得注意的是getevent获取的数值是16进制,sendevent使用的是10进制的,需要进行转换;

模拟power键,sendevent较复杂,很少使用;

$adb shell sendevent /dev/input/event2 0001 116 1$adb shell sendevent /dev/input/event2 0000 0   0$adb shell sendevent /dev/input/event2 0001 116 0$adb shell sendevent /dev/input/event2 0000 0   0

3.input

$adb shell inputUsage: input [<source>] <command> [<arg>...]The sources are:      keyboard      mouse      joystick      touchnavigation      touchpad      trackball      dpad      stylus      gamepad      touchscreenThe 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)

模拟power键,keycode键值可查看 alsp/frameworks/base/core/java/android/view/KeyEvent.java;

$adb shell input keyevent 26       //26是power键的键值;

点击屏幕

$adb shell input tap 100 800

滑动屏幕

$adb shell swipe 100 600 900 600   //Y轴不动,左右滑;$adb shell swipe 500 0   500 1000      //X轴不动,上下滑;
原创粉丝点击