【问题标题】:Simulating Keyboard Events in Android在 Android 中模拟键盘事件
【发布时间】:2013-05-25 08:50:26
【问题描述】:

我有一个项目,我正在尝试触发键盘事件。我正在使用 Instrumentation Class,它在模拟器上运行良好,但是当我在我的设备上启动它时,调用不起作用,有什么办法让它工作吗?

另外,我在网上搜索了一些关于 IWindowManager 和内部 API 的帖子,我完全理解使用它们的风险,但我的项目是一项研究,并不打算发布,所以我没有'不介意在我的项目中使用这些 API,如果它们可以解决我的问题,但问题是我找不到包含这些类的 JAR。

TLDR :我需要一个解决方案来帮助我在我的 Android 设备上触发键盘事件,欢迎提出任何想法

【问题讨论】:

  • 您目前使用的哪些代码适用于模拟器但不适用于设备?
  • 我正在使用 Instrumentation 类

标签: android


【解决方案1】:

其实有一个更简单的方法,我发现 使用 Activity 类或 WebView 类。两者具有相同的功能。 代码如下所示:

webView.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_1));

【讨论】:

  • 其实任何扩展View的类都有这个方法,还有dispatchTouchEvent(MotionEvent event)....以后可能有用
【解决方案2】:

在instrumentation中,有发送keycode的api:

getInstrumentation().sendCharacterSync(int keycode);

如果你有设备的root访问权限,你可以在这里查看代码:

https://code.google.com/p/androidscreencast/source/browse/AndroidScreencastClient/src/net/srcz/android/screencast/client/ClientHandler.java ;

使用 IWindowManager。 IWindowManager是android系统的一部分,可以在android.jar中找到该类,源码可以到android官网下载。

【讨论】:

  • 感谢您的回答,但我已经找到了一个更简单的解决方案:)
猜你喜欢
  • 2011-05-19
  • 2011-12-29
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多