Android sendevent真的很慢-如何加速它?
我正在进行一些ui自动化,并且我能够使用getevent存储屏幕触摸,但是当我尝试使用sendevent发送此信息时,需要花费很长的时间,因此很难实际重播输入 我已经尝试将脚本加载到设备上,并在设备上本地运行脚本(一个包含大量sendevent命令的脚本)。但这只稍微影响了这一点。是否有其他方法可以更快地插入这些命令?确定。 您可以尝试从事件接口直接读取,而不是使用getevent/sendevent 在adb外壳内尝试: dd if=/dev/input/event6 of=record1#记录 dd if=./record1 of=/dev/input/event6#播放Android sendevent真的很慢-如何加速它?,android,user-interface,automation,adb,Android,User Interface,Automation,Adb,我正在进行一些ui自动化,并且我能够使用getevent存储屏幕触摸,但是当我尝试使用sendevent发送此信息时,需要花费很长的时间,因此很难实际重播输入 我已经尝试将脚本加载到设备上,并在设备上本地运行脚本(一个包含大量sendevent命令的脚本)。但这只稍微影响了这一点。是否有其他方法可以更快地插入这些命令?确定。 您可以尝试从事件接口直接读取,而不是使用getevent/sendevent 在adb外壳内尝试: dd if=/dev/input/event6 of=record1#记
但是,这可能会运行得太快…触摸处理程序在不同设备上的实现方式不同。您应该
cat/proc/bus/input/devices
查看触摸处理程序的实现位置
您还可以执行adb shell getevent,与设备交互,并查看接口名称的输出
重播需要很长时间的原因是sendevent二进制文件在每次调用sendevent时都会打开接口文件,向其中写入数据并关闭它。因此,理论上,如果你有一堆sendevent命令,二进制文件就是打开接口文件,为每个命令写入数据并关闭它
我解决这个问题的方法是在/system/core/toolbox下重新写入sendevent.c文件,以便在重播期间只打开该文件一次,写入所有数据并在重播结束时将其关闭。这对我来说非常有效 碰巧我就是这么做的!谢谢你的回答!在这种情况下,如何处理两次触摸之间的延迟。?拆分为大量记录?