快速Keyevent模拟(Android Shell)

时间:2016-10-18 15:24:37

标签: android adb sh

使用adb shell input text <String>adb shell input keyevent <KEYCODE_NAME>可以很好地将文本发送到Android设备,但我的问题是速度。

使用类似input keyevent KEYCODE_A KEYCODE_A KEYCODE_SPACE KEYCODE_A KEYCODE_ENTER;的内容会快速输入文本,但将其分成2个命令将导致2个命令之间的延迟(1秒)。(更慢)。

示例Shell代码:

方法1(快得多):

input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER KEYCODE_A KEYCODE_A KEYCODE_ENTER;

方法2:

input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER;
input keyevent KEYCODE_A KEYCODE_A KEYCODE_ENTER;

我想尽快输入一个大文本,但是不会执行一个带有input keyevent的shell脚本,后跟一个KEYCODE_A的大型组合。 (大型Shell命令被中止)

在没有长时间延迟的情况下发送大文本的最佳方法是什么? sendevent发送大文本会更快吗?

注意:

  • input text <String>的弱点在于它的大小也有限制,并且不能在其中执行特殊的键事件(如后退按钮或Enter / New Line)。

先谢谢。

1 个答案:

答案 0 :(得分:2)

我意识到你是在使用Android Shell,但我认为你已经用尽了可用的选项。

我知道使用Instrumentation

的方法比您尝试过的方法更快
final Instrumentation mInst = new Instrumentation();

mInst.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, keycode));
mInst.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, keycode));