我正在开发一个需要将触摸事件发送到/ dev / input / eventX的 android 应用。我知道执行此类操作的C
代码结构如下:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
要使用此类代码,我需要设置 NDK 。相反,我想在android中使用linux
运行等效的Runtime.getRunTime.exec ()
命令而无需使用NDK。有没有办法做到这一点?
如果不是,发送事件所需的其余C
代码是什么?例如,如何将x = 200和y = 300的触摸事件发送到event0?我搜索过,但我没有找到明确的解决方案。
感谢。
答案 0 :(得分:3)
我不清楚为什么需要直接向/dev/input/eventX
发送事件。但如果它可以通过adb
发送,您可以向设备注入许多类型的事件。
在您的计算机上试试这个:
adb shell input tap 200 300
或者在Android设备shell上:
input tap 200 300
但由于外部注射,它有很高的延迟。
有关input
命令的详细信息,请参阅此处。
Usage: input [<source>] <command> [<arg>...]
The sources are:
mouse
keyboard
joystick
touchnavigation
touchpad
trackball
stylus
dpad
touchscreen
gamepad
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)