您的位置:首页 > 移动开发 > Android开发

Android getevent/sendevent/input使用方法

2017-11-23 20:45 363 查看

Android getevent/sendevent/input使用方法

Android geteventsendeventinput使用方法
getevent

sendevent

input

1.getevent

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

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

$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


获取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/event2
0001 0074 00000001                              //按下
0000 0000 00000000
0001 0074 00000000                              //抬起
0000 0000 00000000

$adb shell getevnet -l /dev/input/event2
EV_KEY       KEY_POWER            DOWN          //按下
EV_SYN       SYN_REPORT           00000000
EV_KEY       KEY_POWER            UP            //抬起
EV_SYN       SYN_REPORT           00000000


2.sendevent

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

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

$adb shell sendevent -h
use: 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 input
Usage: input [<source>] <command> [<arg>...]

The sources are:
keyboard
mouse
joystick
touchnavigation
touchpad
trackball
dpad
stylus
gamepad
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)


模拟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轴不动,上下滑;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: