与 android 模拟器交互
interacting with android emulator
我正在研究 Genymotion android 模拟器,我正在研究如何与之交互。
我读到事件 Linux 为每个设备公开了一个统一的输入事件接口 /dev/input/eventX。
可以用 android 模拟器来完成吗??
我的意思是,是否可以使用 java 实现将鼠标事件发送到模拟器并注入 /dev/input/eventX,这样我们就可以使用 java 上的按钮来代替触摸与 2048 游戏互动并上下移动的应用程序 ??
希望这是一个明确的问题:)
谢谢:)
有很多方法可以与 Android 模拟器交互:
- 您可以重现您应用 "by hand" 到您的设备的手势,通过 ADB Shell 您可以使用
getevent
和 sendevent
命令。这可能有点费力,但您可以阅读 this very clear post 以了解更多信息。
- 您也可以使用
adb shell input
命令,其中 "man output" 是不言自明的。它允许您注入定义的输入,如触摸屏、文本输入等。
- 您也可以使用 UI Automator。从 Java 项目模拟用户行为非常有用。你运行从里面phone.
- 然后,您还可以使用 MonkeyRunner,一个 Python API,它允许您通过 ADB 从 phone 外部编写类似用户的行为脚本。如果您想从设备外部编写脚本,这是更好的方法。
- 如果您想从您的应用程序内部检测手势,您可以使用 Instrument class. It allows you to inject events and requires INJECT_EVENTS permission. Be careful, you cannot inject events outside your application if it is not a system app. To be a system app you need to sign your app with the system certificate, as explained here。由于Genymotion和Android SDK Emulator使用的是AOSP默认证书,您可以轻松获取。
我正在研究 Genymotion android 模拟器,我正在研究如何与之交互。 我读到事件 Linux 为每个设备公开了一个统一的输入事件接口 /dev/input/eventX。
可以用 android 模拟器来完成吗?? 我的意思是,是否可以使用 java 实现将鼠标事件发送到模拟器并注入 /dev/input/eventX,这样我们就可以使用 java 上的按钮来代替触摸与 2048 游戏互动并上下移动的应用程序 ??
希望这是一个明确的问题:)
谢谢:)
有很多方法可以与 Android 模拟器交互:
- 您可以重现您应用 "by hand" 到您的设备的手势,通过 ADB Shell 您可以使用
getevent
和sendevent
命令。这可能有点费力,但您可以阅读 this very clear post 以了解更多信息。 - 您也可以使用
adb shell input
命令,其中 "man output" 是不言自明的。它允许您注入定义的输入,如触摸屏、文本输入等。 - 您也可以使用 UI Automator。从 Java 项目模拟用户行为非常有用。你运行从里面phone.
- 然后,您还可以使用 MonkeyRunner,一个 Python API,它允许您通过 ADB 从 phone 外部编写类似用户的行为脚本。如果您想从设备外部编写脚本,这是更好的方法。
- 如果您想从您的应用程序内部检测手势,您可以使用 Instrument class. It allows you to inject events and requires INJECT_EVENTS permission. Be careful, you cannot inject events outside your application if it is not a system app. To be a system app you need to sign your app with the system certificate, as explained here。由于Genymotion和Android SDK Emulator使用的是AOSP默认证书,您可以轻松获取。