adb模拟键盘/鼠标

举报
林欣 发表于 2025/07/21 11:21:45 2025/07/21
【摘要】 在 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       # 点击应用图标

五、注意事项

  1. 坐标系统

    • Android 屏幕坐标原点 (0, 0) 在左上角,向右为 X 轴正方向,向下为 Y 轴正方向。
    • 部分设备可能因导航栏/状态栏导致实际可用区域偏移。
  2. 权限问题

    • 模拟输入需要 adb 有足够权限(通常需 root 才能操作系统级输入)。
  3. 兼容性

    • 不同 Android 版本可能对 input 命令的支持有差异(如 Android 10+ 限制后台模拟输入)。
  4. 调试工具

    • 使用 adb shell geteventadb 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。