如何在 AVD 上模拟滑动手势(例如左右滑动)?有可能吗?(在Android 开发人员指南 - 模拟器 中我找不到它们......
PS:我的 Android 2.2 API 级别 8 设备设置中确实将“触摸屏支持”设置为“是”
如何在 AVD 上模拟滑动手势(例如左右滑动)?有可能吗?(在Android 开发人员指南 - 模拟器 中我找不到它们......
PS:我的 Android 2.2 API 级别 8 设备设置中确实将“触摸屏支持”设置为“是”
只需单击并按住并移动鼠标即可创建所需的动作。
一种更简单的方法是录制和播放。
而不是处理getevent
的命令输出,然后将结果发送到 sendevent
它真的很慢。我设法从与我的 AVD 相同 Android 版本的真实设备中盲目地记录手势,然后将记录的数据流式传输到输入缓冲区,这成功地欺骗了设备。
您可以通过以下方式复制真实设备的触摸输入:
使用dd
命令,在 adb shell 中运行dd if=/dev/input/event2 of=/sdcard/left
。这会将所有触摸输入数据缓冲到/sdcard/left
文件中。
做你喜欢模拟的手势(滑动)。
现在,(/sdcad/left)
它由您的真实触摸生成的数据填充。您可以退出dd
命令 (ctrl + c)。
将文件从您的真实设备移动到您的 AVD 中的任何位置,比如说(/sdcad/left)
。
在 AVD adb shell 中,运行dd if=/sdcard/left of=/dev/input/event2
中提琴!模拟的触摸事件将会发生。
注意:在我的设备中,具有触摸事件的文件是/dev/input/event2
,它可能因设备而异,因此您可以先使用试错法。
简而言之,如果您在同一设备上录制和播放:
dd if=/dev/input/event2 of=/sdcard/left
做真实的触摸
dd if=/sdcard/left of=/dev/input/event2
根据需要重复第 3 步。
可以通过 adb shell getevent 和 adb shel sendevent 记录输入事件并在模拟器上回放,有点难理解,需要将 getevent 输出的十六进制值转换为十进制,但非常有用。
tl;dr:我想您可能会觉得它不起作用,因为问题在于将用户输入处理联机处理很慢。如果你弄乱了它 10 分钟,它仍然不起作用,那么就有问题 - 但先给它 10 分钟。
这是我的经验,所以你可以看到我是如何得出这个结论的:
我从未明确将设备添加到 AVD 管理器 - Studio 为我添加了它。
当我运行我的(Hello World)应用程序时,花了很长时间才出现 - 首先似乎什么都没有发生,所以我点击了 Studio 窗口底部的“Android”,发现它正在记录它正在做的事情。
仍有许多延误。大约一分钟后,模拟器弹出并显示有关丢失备份或类似内容的消息。再过一分钟左右,我看到它说“正在充电”,所以我点击并拖动,但没有任何反应。我又尝试了几次,最后它通过将“充电”更改为“滑动解锁”做出回应(我认为 - 类似的东西)。所以我又尝试了几次点击拖动,但它似乎没有注册拖动。最后我注意到当我将鼠标悬停在相机(软件)按钮上时它会亮起,所以我点击它,然后我进入相机(不确定是拖动还是点击白色圆圈中的小<),然后从那里我可以做一些事情。