【问题标题】:interacting with android emulator与安卓模拟器交互
【发布时间】:2015-05-14 23:32:14
【问题描述】:

我正在开发 Genymotion android 模拟器,我正在研究如何与之交互。 我读到事件和 Linux 为每个设备公开了一个统一的输入事件接口作为 /dev/input/eventX。

可以用安卓模拟器完成吗? 我的意思是,例如,是否可以使用 java 实现将鼠标事件发送到模拟器并注入到 /dev/input/eventX 以便例如我们可以使用 java 应用程序上的按钮与 2048 游戏交互而不是触摸上下移动??

希望这是一个明确的问题:)

谢谢:)

【问题讨论】:

    标签: java c# android genymotion


    【解决方案1】:

    有很多方法可以与 Android 模拟器交互:

    1. 您可以通过 ADB Shell 重现“手动”应用到设备的手势,您可以使用 geteventsendevent 命令。这可能有点费力,但您可以阅读this very clear post 了解更多信息。
    2. 您也可以使用adb shell input 命令,其中“man 输出”是不言自明的。它允许您注入定义的输入,如触摸屏、文本输入等。
    3. 您也可以使用UI Automator。从 Java 项目模拟用户行为非常有用。你从手机里面跑。
    4. 然后,您还可以使用MonkeyRunner,这是一个 Python API,可让您通过 ADB 从手机外部编写类似用户的行为脚本。如果您想从设备外部编写脚本,这是更好的方法。
    5. 如果您想从应用程序内部检测手势,您可以使用Instrument 类。它允许您注入事件并需要INJECT_EVENTS 权限。请注意,如果它不是系统应用程序,则不能在应用程序之外注入事件。要成为系统应用程序,您需要使用系统证书as explained here 对您的应用程序进行签名。由于 Genymotion 和 Android SDK Emulator 使用的是 AOSP 默认证书,您将能够轻松获得它。

    【讨论】:

    • 嗨 eyal-lezmy 感谢您的回复,我使用了 monkeyRunner,它为我完成了这项工作。我还有一个问题,如果我制作了一个 python 脚本,并且我需要制作一个可以运行脚本并且脚本将与模拟器交互的 c# 应用程序的 java。例如,如果我有一个应用程序,它有一个按钮说拖动,并且在事件处理程序内部有一个可以运行脚本的代码。你认为这可能吗?据我所知,我可以在 VS 和 Eclipse 中编写 python 代码,但它们可以用于 monkeyRunner 吗?感谢您的帮助...
    • 基本上,你不能在 python 中这样做,因为 Android OS 不支持 python 运行时。您将需要使用本地开发语言(Java 和 co)编写脚本。另一个要点,无论您选择哪种解决方案,如果您想将它执行到另一个应用程序而不是您自己的应用程序,您将需要systemroot 用户权限。这意味着,不要认为您可以在消费类设备上执行此操作,因为这将导致安全故障。 2 个解决方案: 1. 从您的应用程序启动 get/sendeventinput 之前请求 su。 2. 看看我在答案中添加的第 5 个要点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多