adb shell input text "sometext"
或者
adb shell input keyevent eventid
这些命令分别模拟来自虚拟/硬件键盘的实际输入吗?
我没有在developer.android.com上找到这些命令的任何文档。
是否有关于这些命令的可信文档?
adb shell input text "sometext"
或者
adb shell input keyevent eventid
这些命令分别模拟来自虚拟/硬件键盘的实际输入吗?
我没有在developer.android.com上找到这些命令的任何文档。
是否有关于这些命令的可信文档?
adb shell input help
会输出一长串输入设备列表后:
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
adb shell input keyboard text "foo"
非常有效。但是您不能从屏幕发送原始键代码。相关于
adb shell input text "some\ text"
private void sendText(int source, String text) {
与编码有关。KeyCharacterMap.VIRTUAL_KEYBOARD
时,我在这里找到了“虚拟键字符映射文件”标题下的描述。/system/usr/keychars/Virtual.kcm
下找到了它。
在该文件中,它将键事件映射到最常见的字符(大多数只有 ASCII)。是的,该代码接受文本并尝试通过 KeyCharacterMap.VIRTUAL_KEYBOARD 将其映射回键事件并发送它们。这些是否分别模拟来自虚拟/硬件键盘的实际输入?
adb shell input text "<longText>"
输入的长文本(约 200 个字符)部分丢失 - 甚至是末尾的较大部分!
这看起来取决于制造商。我正在开发一个工具,用于评估不同键盘之间的性能,并尝试模拟真实用户的键盘输入。我使用的工具(Android View Client)使用输入文本将文本发送到设备。然而,当使用此工具模拟文本输入时,我观察到键盘的行为存在差异,这是由于使用此输入方法引起的。
使用输入文本时,指针位置不会改变,键盘也不会显示任何按键动画。相反,当使用输入 tap X Y来按下键时,视觉行为与真实用户敲击键相同。此外,GBoard的行为对这两种输入方法也不同。当使用输入文本然后点击建议的单词时,键盘不会添加尾随空格。而使用输入 tap则不会出现这种情况。这有助于得出结论,确实存在这两种输入方法之间的差异。
adb shell input keyevent eventid
"肯定不能模拟真实的按键事件,因为设备ID == 0。那么"adb shell input text "sometext""呢?它毕竟不是来自物理键盘...所以我猜它会像点击软键盘一样操作?
adb shell input text "something really long"
命令,你会看到按键自动输入。 (截至2020年SDK 28版本) - Nabil Freeman