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

Android 下收发input事件的工具 getevent 和 sendevent

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

关于event设备的获取,在 /proc/bus/input/devices 下面:

$ adb shell cat /proc/bus/input/devices

0 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 sendevent -h

use: sendevent device type code value

1、模拟发送一个Power键:

$ export KEYCODE_POWER=26

$ input keyevent ${KEYCODE_HOME}

或者:

先获取gpio-keys event的设备接口:

$ adb shell cat /proc/bus/input/devices | grep -A 5 gpio-keys | grep event

H: Handlers=event5

# Press power button(Don't release)

$ adb shell sendevent /dev/input/event5 1 $((0x74)) 1

$ adb shell sendevent /dev/input/event5 0 0 0

# Release power button

$ adb shell sendevent /dev/input/event5 1 $((0x74)) 0

$ adb shell sendevent /dev/input/event5 0 0 0

2、模拟获取Power键的事件

先执行

$ adb shell getevent /dev/input/event5

然后按下power键并观察输出:

按下时:

0001 0074 00000001

0000 0000 00000000

弹起来时:

0001 0074 00000000

0000 0000 00000000

可以看到更好跟我们上面模拟的一样,注,上面那些值是十六进制的,如果想要 更加直观地分析获取的上报事件可以参考 在 Android 通过 get_event 获得 input 设备 上报event
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: