【问题标题】:Way to simulate hardware key press event模拟硬件按键事件的方法
【发布时间】:2011-01-16 09:52:30
【问题描述】:

我有自定义的InputMethod,其中有一个BroadcastListener。当侦听器在onReceive() 方法中捕捉到一个意图时,我调用我的InputMethodonKey 方法,并以这种方式模拟来自软键盘的按键。如果我打电话给onKeyDownonKeyUp,那么我会模拟硬件键盘。所以这是我不喜欢的解决方案。

昨天我发现了这个: http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html

使用Instrumentation.sendKeyDownUpSync 模拟按键是否是个好主意并且它工作得很好,我什至不需要实现我自己的InputMethod。我的意思是,据我所知,此仪器是为了测试目的而提供的。

以我的方式使用是个好主意吗?

【问题讨论】:

    标签: android methods input instrumentation


    【解决方案1】:

    我认为使用你自己的IME 来测试你的应用程序太过分了。

    您已经有办法使用 Android 的 Instrumentation 来实现这一点。 您还可以查看Robotium,这可能对您要测试的内容有用。

    【讨论】:

    • Macarase 感谢您的回复,但关键是我不想测试任何东西,我只想在应用程序的最终发布版本中使用 Instrumentation 作为正常逻辑部分来生成用户输入数据。这可以吗,这在任何版本的android上都可以正常工作,会有任何权限问题吗?是的,如果我使用 Instrumentation,就不需要 IME,但是可以在发布版本中使用它(不用于测试)。
    • 您不应该在您的应用程序中使用Instrumentation。您要归档什么?
    • 存在通过广播从另一个应用程序发送的 Intent(我无权访问该应用程序)。在意图中有一个额外的字符的ASCII码。所以我想在我自己的应用程序中捕获它并将该字符发送到当前的 InputMethod。我找到了两种方法来做到这一点。首先是我自己的 IM,它有一个广播监听器的实例。 BL捕获Intent,然后调用IM的onKeyDown和onKeyUp方法。在第二个中,我只使用 BL 来捕捉意图,然后调用 Instrumentation.sendKeyDownUpSync() 来模拟按键。
    • 当然,第二种方式对我来说看起来更容易,更好的是它可以与用户安装的任何 IM 一起使用。但是现在你说将它用作我的应用程序的一部分不是一个好主意,你能告诉我为什么吗?
    • 因为 Instrumentation 仅用于测试,我猜您将无法将带有 Instrumentation 的 apk 上传到市场。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2017-01-20
    • 2012-12-14
    相关资源
    最近更新 更多