Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sendevent真的很慢-如何加速它?_Android_User Interface_Automation_Adb - Fatal编程技术网

Android sendevent真的很慢-如何加速它?

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#记

我正在进行一些ui自动化,并且我能够使用getevent存储屏幕触摸,但是当我尝试使用sendevent发送此信息时,需要花费很长的时间,因此很难实际重播输入

我已经尝试将脚本加载到设备上,并在设备上本地运行脚本(一个包含大量sendevent命令的脚本)。但这只稍微影响了这一点。是否有其他方法可以更快地插入这些命令?

确定。 您可以尝试从事件接口直接读取,而不是使用getevent/sendevent 在adb外壳内尝试:

dd if=/dev/input/event6 of=record1#记录

dd if=./record1 of=/dev/input/event6#播放


但是,这可能会运行得太快…

触摸处理程序在不同设备上的实现方式不同。您应该
cat/proc/bus/input/devices
查看触摸处理程序的实现位置

您还可以执行adb shell getevent,与设备交互,并查看接口名称的输出

重播需要很长时间的原因是sendevent二进制文件在每次调用sendevent时都会打开接口文件,向其中写入数据并关闭它。因此,理论上,如果你有一堆sendevent命令,二进制文件就是打开接口文件,为每个命令写入数据并关闭它


我解决这个问题的方法是在/system/core/toolbox下重新写入sendevent.c文件,以便在重播期间只打开该文件一次,写入所有数据并在重播结束时将其关闭。这对我来说非常有效

碰巧我就是这么做的!谢谢你的回答!在这种情况下,如何处理两次触摸之间的延迟。?拆分为大量记录?