adb操控手机

一、前言
  • AndroidDebug Bridge 我们一般简称为adb,它是一个非常强大的命令行工具,通过adb工具,你能够与你的android设备进行通信。使用adb命令是可以操控手机的,比如点击、滑动、输入等。在操控手机之前要先连接上手机,下面先来看下adb如何连接手机。
二、下载adb工具
三、连接手机
  • 连接手机分为两种方式:1、有线连接;2、无线连接(要内网环境)

  • 1、有线连接:

    • (1) 数据线连接
    • (2)把开发者选项和USB调试打开
    • (3)如果有模拟点击之类的选项也一定要打开,否则adb操控无效
    • (4)如果是连接成功 输入adb devices 会显示你的设备。
  • 2、无线连接(要求是内网环境,必须先有线连接)

    • (1)使用adb tcpip 5555命令重启手机上的服务(端口可自定义)
    • (2)adb connect 192.168.0.5:5555连接手机,您的内网ip+刚才的端口号
    • (3)再使用 adb devices 会多一个设备,就是成功了,这时候拔掉数据线,操控第二个设备都可以。
      在这里插入图片描述
四、命令操控手机
  • 输入 0-9其中一个数字(android手机地址就是adb devices显示的设备名称)
 adb -s <android手机地址> shell input  keyevent 7-16
  • 返回桌面
adb  -s <android手机地址>  shell input keyevent 3
  • 返回键
  adb  -s <android手机地址>  shell input  keyevent 4
  • 点击事件(这里的400 400 是点击X坐标400,Y坐标也是400的位置)
 adb -s <android手机地址> shell input tap 400 400
  • 滑动(可以模拟上下左右滑动)
 adb  -s <android手机地址> shell input swipe <X1> <Y1> <X2> <Y2>
 如向下滑动: adb -s <android手机地址> shell input swipe 100 500 100 450
  • 输入文本
adb  -s  <android手机地址> shell input text "hello" #输入hello
五、手机控制手机
  • 上面说的是PC控制手机,现在说手机直接控制手机;可以写个android软件执行命令即可;需要注意的是:

    • 1、操控自身app不需要root权限,一旦进入另一个app需要root权限的

    • 2、命令有所改变,不需要 adb到shell这一串了,因为android系统已经进入了shell了

       如模拟点击
       input tap 400 400
      
  • 如果是进入其他app,需要执行命令的代码(手机需要root)

    public void execShellCmd(String cmd) {  

        try {  
            // 申请获取root权限,这一步很重要,不然会没有作用 
            Process process = Runtime.getRuntime().exec("su");  
            // 获取输出流 
            OutputStream outputStream = process.getOutputStream();  
            DataOutputStream dataOutputStream = new DataOutputStream(  
                    outputStream);  
            dataOutputStream.writeBytes(cmd);  
            dataOutputStream.flush();  
            dataOutputStream.close();  
            outputStream.close();  
        } catch (Throwable t) {  
            t.printStackTrace();  
        }  
    }

posted on   愤怒的苹果ext  阅读(204)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示