我知道input tap x y
这个Shell命令,但是我想了解如何使用sendevent
命令执行点击。我已经能够通过以下命令实现:
sendevent /dev/input/event5 3 53 X &&
sendevent /dev/input/event5 3 54 Y &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0 &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0
在这里,X
和Y
代表被点击的位置。我正在安卓模拟器BlueStacks 5
上测试它,显示分辨率设置为1920x1080
。
代码能够工作且点击被触发,但是我不知道如何将我想要点击的位置转换为sendevent
XY位置。
如果我使用ADB发送:
sendevent /dev/input/event5 3 53 2000 &&
sendevent /dev/input/event5 3 54 2000 &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0 &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0
点击发生在x75 y75附近,如何计算?我的意思是屏幕坐标xy -> 发送事件xy?
如何复制:
- 首先在窗口中启用BlueStacks 5 adb:
设置 -> 高级 -> Android调试桥
- 打开cmd窗口并运行
cd C:\Program Files\BlueStacks_nxt
,假设BlueStacks安装在默认路径。
执行以下命令:
hd-adb.exe connect 127.0.0.1:X
其中X是在启用ADB的窗口中显示的端口号。hd-adb.exe -s 127.0.0.1:X shell
现在我们进入了shell,执行一个新命令:getevent -p
并搜索:
... /dev/input/event5
name: "BlueStacks Virtual Touch"
在我的模拟器上,触摸输入事件是 event5
,在你的设备上可能不同,请相应更改。
现在您可以使用下面的代码模拟点击,将 XY
更改为要单击的位置:
sendevent /dev/input/event5 3 53 X &&
sendevent /dev/input/event5 3 54 Y &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0 &&
sendevent /dev/input/event5 0 2 0 &&
sendevent /dev/input/event5 0 0 0
我正在尝试弄清如何将模拟器屏幕位置转换为sendevent
位置。
例如
,如果您想要在x200 y200
处执行单击操作,需要使用sendevent
,那么需要的值是多少?
如何计算?
view.getLocationOnScreen()
时,什么也没有发生。 - Nathan