# AutoBot API 文档
## 基础信息
| 基本格式 | 说明 |
|---------|------|
| 基础URL | `http://[ip]:18080/api` |
| 成功状态码 | code: 1 表示成功 |
| 坐标格式 | 支持绝对坐标(如x=300)或相对坐标(如x=0.5表示屏幕中点) |
## API 分类索引
1. [设备信息类API](#设备信息类)
2. [屏幕操作类API](#屏幕操作类)
3. [应用管理类API](#应用管理类)
4. [文件操作类API](#文件操作类)
5. [输入输出类API](#输入输出类)
6. [通讯类API](#通讯类)
7. [多媒体类API](#多媒体类)
8. [脚本执行类API](#脚本执行类)
9. [系统控制类API](#系统控制类)
## 设备信息类
### 欢迎页面
- **URL**: `/hello`
- **方法**: GET
- **功能**: 用于检测服务器是否连通
- **参数**: 无
- **返回**: hello
### 获取设备ID
- **URL**: `/getDeviceId`
- **方法**: GET
- **功能**: 获取设备唯一标识符
- **参数**: 无
- **返回示例**:
```json
{
"code": 1,
"data": "xxxx-xxxx-xxxx-xxxx"
}
```
### 获取设备IP
- **URL**: `/getIp`
- **方法**: GET
- **功能**: 获取设备所有IP地址
- **参数**: 无
- **返回示例**:
```json
{
"code": 1,
"data": [
"192.168.1.100"
]
}
```
### 获取版本号
- **URL**: `/version`
- **方法**: GET
- **功能**: 获取API版本号
- **参数**: 无
- **返回示例**: 12403
### 获取屏幕信息
- **URL**: `/screenInfo`
- **方法**: GET
- **功能**: 获取屏幕方向、宽度和高度
- **参数**: 无
- **返回示例**:
```json
{
"code": 1,
"data": {
"rotation": 0,
"width": 1080,
"height": 2340
}
}
```
### 获取系统信息
- **URL**: `/getSystemInfo`
- **方法**: GET
- **功能**: 获取详细的设备和系统信息
- **参数**: 无
- **返回**: 包含设备型号、系统版本、内存、存储等详细信息
### 获取屏幕方向
- **URL**: `/screenRotation`
- **方法**: GET
- **功能**: 获取当前屏幕旋转方向
- **参数**: 无
- **返回说明**:
- 0: 竖直方向(垂直向上),通常为纵向模式
- 1: 逆时针旋转90度,横向模式,屏幕顶部位于右侧
- 2: 旋转180度,颠倒模式,屏幕顶部位于底部
- 3: 顺时针旋转90度,横向模式,屏幕顶部位于左侧
### 获取顶层Activity信息
- **URL**: `/getTopActivity`
- **方法**: GET
- **功能**: 获取当前屏幕最前端的页面及应用信息
- **参数**: 无
- **返回示例**:
```json
{
"code": 1,
"data": {
"shortClassName": "org.chromium.chrome.browser.ChromeTabbedActivity",
"className": "org.chromium.chrome.browser.ChromeTabbedActivity",
"main": "com.google.android.apps.chrome.Main",
"packageName": "com.android.chrome"
}
}
```
### 设置设备名称
- **URL**: `/setDisplayName`
- **方法**: POST
- **功能**: 设置设备的自定义名称(非系统名称)
- **参数**:
```json
{"value":"设备001"}
```
- **返回**: 成功返回1
### 获取设备名称
- **URL**: `/getDisplayName`
- **方法**: GET
- **功能**: 获取设置的设备自定义名称
- **参数**: 无
- **返回**: 设置的名称
## 屏幕操作类
### 屏幕截图
- **URL**: `/screenShot`
- **方法**: GET
- **功能**: 获取当前屏幕截图(直接返回图像)
- **参数**: 无
- **返回**: 图像文件
### 屏幕截图(Base64)
- **URL**: `/screenShotBase64`
- **方法**: GET
- **功能**: 以Base64字符串方式返回屏幕截图
- **参数**: 无
- **返回**: Base64编码的图像
### 屏幕布局(XML)
- **URL**: `/screenXml`
- **方法**: GET
- **功能**: 以XML格式返回当前屏幕的布局信息
- **参数**:
- isWait: 0表示跳过等待(默认等待)
- **返回**: XML格式的屏幕布局
### 屏幕布局(JSON)
- **URL**: `/screenJson`
- **方法**: GET
- **功能**: 以JSON格式返回当前屏幕的布局信息
- **参数**:
- isWait: 0表示跳过等待(默认等待)
- **返回**: JSON格式的屏幕布局
### 模拟点击
- **URL**: `/click`
- **方法**: POST
- **功能**: 模拟在屏幕指定位置点击
- **参数**:
```json
{"x":0.5,"y":0.5}
```
- **说明**: x,y支持绝对坐标或百分比(0-1)
- **返回**: 成功返回1
### 模拟长按
- **URL**: `/longClick`
- **方法**: POST
- **功能**: 模拟在屏幕指定位置长按
- **参数**:
```json
{"x":0.5,"y":0.5}
```
- **说明**: x,y支持绝对坐标或百分比(0-1)
- **返回**: 成功返回1
### 模拟长按(指定时间)
- **URL**: `/press`
- **方法**: POST
- **功能**: 模拟在屏幕指定位置长按指定时间
- **参数**:
```json
{"x":0.5,"y":0.8,"duration":1000}
```
- **说明**:
- x,y支持绝对坐标或百分比(0-1)
- duration为持续时间,单位毫秒
- **返回**: 成功返回1
### 模拟滑动
- **URL**: `/swipe`
- **方法**: POST
- **功能**: 模拟从一点滑动到另一点
- **参数**:
```json
{"x1":0.2,"y1":0.8,"x2":0.2,"y2":0.2,"duration":500}
```
- **说明**:
- x1,y1,x2,y2支持绝对坐标或百分比(0-1)
- duration为持续时间,单位毫秒
- **返回**: 成功返回1
### 模拟按键
- **URL**: `/pressKeyCode`
- **方法**: POST
- **功能**: 模拟按下系统按键
- **参数**:
```json
{"value":4}
```
- **说明**: value代表keyCode,常见值:
- 3: HOME键
- 4: 返回键
- 26: 电源键
- **返回**: 成功返回1
### 单指手势
- **URL**: `/gesture`
- **方法**: POST
- **功能**: 执行单指自定义手势
- **参数**:
```json
{
"duration":200,
"points":[{"x":168,"y":558},{"x":172,"y":562},{"x":276,"y":562},...]
}
```
- **说明**:
- duration为持续时间,单位毫秒
- points为手势路径点
- **返回**: 成功返回1
### 多指手势
- **URL**: `/gestures`
- **方法**: POST
- **功能**: 执行多指自定义手势
- **参数**:
```json
[{
"delay":0,
"duration":200,
"points":[{"x":168,"y":558},{"x":172,"y":562},...]
}]
```
- **说明**:
- delay为延迟执行毫秒数
- duration为持续时间,单位毫秒
- points为手势路径点
- **返回**: 成功返回1
## 输入输出类
### 输入字符
- **URL**: `/inputChar`
- **方法**: POST
- **功能**: 通过模拟按键输入ASCII字符
- **参数**:
```json
{"value":"hello world"}
```
- **说明**: 仅支持ASCII编码字符
- **返回**: 成功返回1
### 输入字符串
- **URL**: `/inputText`
- **方法**: POST
- **功能**: 输入文本(支持多语言)
- **参数**:
```json
{"value":"你好世界"}
```
- **返回**: 成功返回1
### 设置剪切板内容
- **URL**: `/setClipText`
- **方法**: POST
- **功能**: 设置剪切板文本内容
- **参数**:
```json
{"value":"hello world"}
```
- **返回**: 成功返回1
### 获取剪切板内容
- **URL**: `/getClipText`
- **方法**: GET
- **功能**: 获取剪切板文本内容
- **参数**: 无
- **返回**: 剪切板文本
### 清除输入框文本
- **URL**: `/clearText`
- **方法**: GET
- **功能**: 清除当前输入框中的文本
- **参数**: 无
- **返回**: 成功返回1
## 应用管理类
### 获取所有应用列表
- **URL**: `/getAllPackage`
- **方法**: GET
- **功能**: 获取设备上所有应用包名
- **参数**: 无
- **返回**: 所有应用包名列表
### 根据包名获取应用信息
- **URL**: `/getPackageInfo`
- **方法**: GET
- **功能**: 获取指定应用的详细信息
- **参数**:
- packageName: 应用包名
- **返回**: 应用详细信息
### 根据包名获取启动类
- **URL**: `/getStartActivity`
- **方法**: GET
- **功能**: 获取应用的启动入口类
- **参数**:
- packageName: 应用包名
- **返回**: 启动入口类名
### 启动应用
- **URL**: `/startPackage`
- **方法**: GET
- **功能**: 启动指定应用
- **参数**:
- packageName: 应用包名
- **返回**: 成功返回1
### 停止应用
- **URL**: `/stopPackage`
- **方法**: GET
- **功能**: 强制停止指定应用
- **参数**:
- packageName: 应用包名
- **返回**: 成功返回1
### 清除应用数据
- **URL**: `/clearPackage`
- **方法**: GET
- **功能**: 清除应用数据(不可恢复)
- **参数**:
- packageName: 应用包名
- **返回**: 成功返回1
## 文件操作类
### 列出文件夹内容
- **URL**: `/listFile`
- **方法**: POST
- **功能**: 列出指定目录下的所有文件和文件夹
- **参数**:
```json
{"value":"/sdcard"}
```
- **返回**: 目录内容列表,包含文件属性
### 上传文件
- **URL**: `/upload`
- **方法**: POST
- **功能**: 将文件上传到设备
- **参数**: form-data格式提交,path指定目标目录
- **说明**: 上传文件只能保存在/sdcard/目录下
- **返回**: 上传成功后的文件路径
### 下载文件
- **URL**: `/download`
- **方法**: GET
- **功能**: 从设备下载文件
- **参数**:
- path: 文件路径(建议使用encodeURIComponent编码)
- **返回**: 文件内容
### 删除文件/文件夹
- **URL**: `/delFile`
- **方法**: POST
- **功能**: 删除文件或目录(包括子目录)
- **参数**:
```json
{"value":"/sdcard/tmp"}
```
- **说明**: 请谨慎使用,会删除指定路径下所有内容
- **返回**: 成功返回1
## 通讯类
### 获取所有联系人
- **URL**: `/getAllContact`
- **方法**: GET
- **功能**: 获取设备所有联系人
- **参数**:
- number: 可选,指定号码获取对应联系人,默认获取所有
- **返回**: 联系人列表
### 删除联系人
- **URL**: `/deleteContact`
- **方法**: GET
- **功能**: 删除指定联系人
- **参数**:
- number: 联系人号码,不传或*表示删除所有
- **说明**: 请谨慎使用
- **返回**: 删除成功的数量
### 插入联系人
- **URL**: `/insertContact`
- **方法**: POST
- **功能**: 添加联系人
- **参数**:
```json
{"name":"李四","number":"13312341246"}
```
- **返回**: 成功返回1
### 获取所有短信
- **URL**: `/getAllSms`
- **方法**: GET
- **功能**: 获取设备短信
- **参数**:
- number: 可选,指定号码获取对应短信,默认获取所有
- **说明**: 短信过多时接口会较慢
- **返回**: 短信列表
### 发送短信
- **URL**: `/sendSms`
- **方法**: POST
- **功能**: 发送短信
- **参数**:
```json
{
"phoneNumber":"13312341234",
"value":"hello world"
}
```
- **说明**: 因安全限制可能会跳到发送页面
- **返回**: 无
### 拨打电话
- **URL**: `/callPhone`
- **方法**: GET
- **功能**: 拨打电话
- **参数**:
- number: 要拨打的号码
- **说明**: 仅支持主卡拨号
- **返回**: 无
### 挂断电话
- **URL**: `/endCall`
- **方法**: GET
- **功能**: 挂断当前通话
- **参数**: 无
- **返回**: 成功返回1
## 多媒体类
### 播放网络音乐
- **URL**: `/playMusic`
- **方法**: POST
- **功能**: 播放网络音频
- **参数**:
```json
{"value":"https://example.com/audio.mp3"}
```
- **说明**: Android 10以下可能失败
- **返回**: 成功返回1
### 停止播放音乐
- **URL**: `/stopMusic`
- **方法**: GET
- **功能**: 停止正在播放的音频
- **参数**: 无
- **返回**: 成功返回1
### 开始录屏
- **URL**: `/startRecoreScreen`
- **方法**: GET
- **功能**: 开始屏幕录制
- **参数**:
- limit: 录制时长上限(秒),默认180秒
- **说明**: 录制文件保存为/sdcard/screen.mp4
- **返回**: 成功返回1
### 结束录屏
- **URL**: `/stopRecoreScreen`
- **方法**: GET
- **功能**: 停止屏幕录制
- **参数**: 无
- **说明**: 录制文件保存为/sdcard/screen.mp4
- **返回**: 成功返回1
## 脚本执行类
### 执行Shell命令
- **URL**: `/execCmd`
- **方法**: POST
- **功能**: 执行shell命令
- **参数**:
```json
{
"timeout": 1,
"value": "ls -l /sdcard/"
}
```
- **说明**: 可使用\n连接多条命令
- **返回**: 命令执行结果
### 执行AutoX.js脚本
- **URL**: `/execScript`
- **方法**: POST
- **功能**: 执行AutoX.js脚本
- **参数**:
```json
{
"action":"exec",
"script":"console.show(true);console.log(`hello world`);",
"delay":0,
"interval":3000,
"loopTimes":2
}
```
- **说明**:
- action: 默认exec
- script: 脚本内容
- path: 本地脚本路径(优先级高于script)
- delay: 延迟执行毫秒数
- interval: 循环间隔毫秒数
- loopTimes: 循环次数,0为无限循环
### 停止所有脚本
- **URL**: `/stopAllScript`
- **方法**: GET
- **功能**: 停止所有运行中的脚本
- **参数**: 无
- **返回**: 成功返回1
## 系统控制类
### 熄屏控制
- **URL**: `/turnScreenOff`
- **方法**: GET
- **功能**: 关闭屏幕显示
- **参数**: 无
- **说明**: 非锁屏,仅关闭显示
- **返回**: 成功返回1
### 亮屏控制
- **URL**: `/turnScreenOn`
- **方法**: GET
- **功能**: 点亮屏幕
- **参数**: 无
- **说明**: 若设备已锁屏会模拟电源键
- **返回**: 成功返回1
### 开启安全模式
- **URL**: `/turnSafeModeOn`
- **方法**: GET
- **功能**: 开启安全模式
- **参数**: 无
- **说明**: 安全模式下无法获取屏幕布局和通知
- **返回**: 成功返回1
### 关闭安全模式
- **URL**: `/turnSafeModeOff`
- **方法**: GET
- **功能**: 关闭安全模式
- **参数**: 无
- **说明**: 默认为关闭状态
- **返回**: 成功返回1
### 检查安全模式
- **URL**: `/isSafeMode`
- **方法**: GET
- **功能**: 检查安全模式状态
- **参数**: 无
- **返回**: 1表示开启,0表示关闭
### 退出服务
- **URL**: `/exit`
- **方法**: GET
- **功能**: 终止AutoBot服务
- **参数**: 无
- **说明**: 需重新激活才能恢复服务
- **返回**: 无