在 Android 中模拟键盘事件

Posted

技术标签:

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

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

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

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

【问题讨论】:

您目前使用的哪些代码适用于模拟器但不适用于设备? 我正在使用 Instrumentation 类 【参考方案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官网下载。

【讨论】:

感谢您的回答,但我已经找到了一个更简单的解决方案:)

以上是关于在 Android 中模拟键盘事件的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 的 VS 模拟器停止响应键盘

Android中怎么实现模拟键盘输入?

在 C 中模拟键盘事件箭头键

VB6模拟键盘事件

Mac 鼠标/键盘事件的监听和模拟

如何在 Qt 中模拟适用于 Linux 和 Windows 的所有鼠标和键盘事件?