13

如何在 AVD 上模拟滑动手势(例如左右滑动)?有可能吗?(在Android 开发人员指南 - 模拟器 中我找不到它们......

PS:我的 Android 2.2 API 级别 8 设备设置中确实将“触摸屏支持”设置为“是”

4

4 回答 4

8

只需单击并按住并移动鼠标即可创建所需的动作。

于 2011-08-03T21:51:51.743 回答
5

一种更简单的方法是录制和播放。

而不是处理getevent的命令输出,然后将结果发送到 sendevent它真的很慢。我设法从与我的 AVD 相同 Android 版本的真实设备中盲目地记录手势,然后将记录的数据流式传输到输入缓冲区,这成功地欺骗了设备。

您可以通过以下方式复制真实设备的触摸输入:

  1. 使用dd命令,在 adb shell 中运行dd if=/dev/input/event2 of=/sdcard/left。这会将所有触摸输入数据缓冲到/sdcard/left文件中。

  2. 做你喜欢模拟的手势(滑动)。

  3. 现在,(/sdcad/left)它由您的真实触摸生成的数据填充。您可以退出dd命令 (ctrl + c)。

  4. 将文件从您的真实设备移动到您的 AVD 中的任何位置,比如说(/sdcad/left)

  5. 在 AVD adb shell 中,运行dd if=/sdcard/left of=/dev/input/event2

中提琴!模拟的触摸事件将会发生。

注意:在我的设备中,具有触摸事件的文件是/dev/input/event2,它可能因设备而异,因此您可以先使用试错法。


简而言之,如果您在同一设备上录制和播放:

  1. dd if=/dev/input/event2 of=/sdcard/left

  2. 做真实的触摸

  3. dd if=/sdcard/left of=/dev/input/event2

  4. 根据需要重复第 3 步。

于 2013-03-24T16:38:38.790 回答
2

可以通过 adb shell getevent 和 adb shel sendevent 记录输入事件并在模拟器上回放,有点难理解,需要将 getevent 输出的十六进制值转换为十进制,但非常有用。

于 2011-08-04T05:36:52.497 回答
0

tl;dr:我想您可能会觉得它不起作用,因为问题在于将用户输入处理联机处理很慢。如果你弄乱了它 10 分钟,它仍然不起作用,那么就有问题 - 但先给它 10 分钟。

这是我的经验,所以你可以看到我是如何得出这个结论的:

我从未明确将设备添加到 AVD 管理器 - Studio 为我添加了它。

当我运行我的(Hello World)应用程序时,花了很长时间才出现 - 首先似乎什么都没有发生,所以我点击了 Studio 窗口底部的“Android”,发现它正在记录它正在做的事情。

仍有许多延误。大约一分钟后,模拟器弹出并显示有关丢失备份或类似内容的消息。再过一分钟左右,我看到它说“正在充电”,所以我点击并拖动,但没有任何反应。我又尝试了几次,最后它通过将“充电”更改为“滑动解锁”做出回应(我认为 - 类似的东西)。所以我又尝试了几次点击拖动,但它似乎没有注册拖动。最后我注意到当我将鼠标悬停在相机(软件)按钮上时它会亮起,所以我点击它,然后我进入相机(不确定是拖动还是点击白色圆圈中的小<),然后从那里我可以做一些事情。

于 2015-06-06T05:38:06.787 回答