adb模拟键盘/鼠标
【摘要】 在 Android 调试中,adb 可以通过 input 命令模拟键盘输入、鼠标点击、触摸操作等,适用于自动化测试或远程控制设备。以下是详细用法和示例: 一、模拟键盘输入 1. 发送文本adb shell input text "HelloWorld"注意:文本需用英文双引号包裹。空格会被忽略,需用 %s 代替(如 Hello%sWorld 输出 Hello World)。特殊字符(如 @、...
在 Android 调试中,adb
可以通过 input
命令模拟键盘输入、鼠标点击、触摸操作等,适用于自动化测试或远程控制设备。以下是详细用法和示例:
一、模拟键盘输入
1. 发送文本
adb shell input text "HelloWorld"
- 注意:
- 文本需用英文双引号包裹。
- 空格会被忽略,需用
%s
代替(如Hello%sWorld
输出Hello World
)。 - 特殊字符(如
@
、#
)可能需转义或使用 Unicode 编码。
2. 发送按键事件
adb shell input keyevent <KEYCODE>
-
常用键值:
键名 KEYCODE 说明 HOME 3 返回主屏幕 BACK 4 返回键 POWER 26 电源键 MENU 82 菜单键 VOLUME_UP 24 音量加 VOLUME_DOWN 25 音量减 ENTER 66 回车键 DEL 67 退格键 SPACE 62 空格键 TAB 61 Tab 键 ESC 111 Escape 键 F1~F12 131~142 功能键 DPAD_UP 19 方向键上 DPAD_DOWN 20 方向键下 DPAD_LEFT 21 方向键左 DPAD_RIGHT 22 方向键右 -
示例:
adb shell input keyevent 3 # 返回主屏幕 adb shell input keyevent 4 # 返回上一级 adb shell input keyevent 66 # 模拟回车键
二、模拟鼠标/触摸操作
1. 单击屏幕
adb shell input tap <x> <y>
- 示例:
adb shell input tap 500 1000 # 在屏幕坐标 (500, 1000) 处点击
2. 长按屏幕
adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>
- 说明:
- 通过模拟滑动实现长按(起点和终点相同,持续时间较长)。
- 示例:
adb shell input swipe 500 1000 500 1000 2000 # 长按 (500, 1000) 2秒
3. 滑动屏幕
adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>
- 示例:
adb shell input swipe 300 1000 300 500 300 # 从 (300, 1000) 向上滑动到 (300, 500),耗时 300ms
4. 滚动(适用于 ListView/RecyclerView)
adb shell input swipe <x> <y1> <x> <y2> <duration_ms>
- 示例:
adb shell input swipe 500 1500 500 500 500 # 垂直滚动(从上到下)
三、模拟手势操作
1. 捏合缩放(Zoom In/Out)
# 缩小(捏合)
adb shell input swipe 400 800 600 600 200
adb shell input swipe 600 600 400 800 200
# 放大(展开)
adb shell input swipe 400 800 200 1000 200
adb shell input swipe 200 1000 400 800 200
2. 拖拽
adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>
- 示例:
adb shell input swipe 500 1000 800 1000 500 # 将 (500, 1000) 拖拽到 (800, 1000)
四、高级用法
1. 获取屏幕分辨率
adb shell wm size
- 输出示例:
Physical size: 1080x1920
- 用途:根据分辨率计算坐标(如居中点击):
adb shell input tap 540 960 # 1080/2=540, 1920/2=960
2. 获取当前窗口信息
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
- 用途:确认当前活动窗口,避免操作到错误界面。
3. 组合操作(脚本化)
# 示例:解锁屏幕 + 进入应用
adb shell input keyevent 26 # 唤醒屏幕
adb shell input swipe 500 1500 500 800 300 # 滑动解锁
adb shell input tap 200 300 # 点击应用图标
五、注意事项
-
坐标系统:
- Android 屏幕坐标原点
(0, 0)
在左上角,向右为 X 轴正方向,向下为 Y 轴正方向。 - 部分设备可能因导航栏/状态栏导致实际可用区域偏移。
- Android 屏幕坐标原点
-
权限问题:
- 模拟输入需要
adb
有足够权限(通常需root
才能操作系统级输入)。
- 模拟输入需要
-
兼容性:
- 不同 Android 版本可能对
input
命令的支持有差异(如 Android 10+ 限制后台模拟输入)。
- 不同 Android 版本可能对
-
调试工具:
- 使用
adb shell getevent
或adb shell sendevent
可实现更底层的输入模拟(需 root)。
- 使用
六、完整示例
1. 自动输入文本 + 点击按钮
adb shell input text "Hello%sWorld" # 输入文本(空格用 %s 代替)
adb shell input tap 500 1200 # 点击坐标 (500, 1200)
2. 模拟滑动解锁
adb shell input swipe 500 1800 500 800 500 # 从下往上滑动解锁
通过 adb input
命令,你可以轻松实现自动化测试、远程控制或模拟用户操作。结合 adb shell
的其他命令(如 screencap
截图),可以构建完整的自动化脚本。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)