Files
MaaAssistantArknights/src/Java/Readme.md
MistEO 9aab7f4846 feat: 重构主页日志侧边栏整体布局和样式 (#15211)
* feat: 重构主页日志侧边栏整体布局和样式

* feat: 优化一下Live

* refactor: 调整卡片布局

* revert: 回滚不知道干嘛的改动

* feat: 调整右上角悬浮窗布局

* chore: AI一直在改个啥

* Revert "chore: AI一直在改个啥"

This reverts commit b5ae565c34a2a187ae953cc385b0b85de83fc140.

* perf: 调整卡片分割逻辑,优化界面布局

* perf: 优化显示效果

* rft: 简化绑定

* chore: 调整界面布局

* feat: 任务报错更新缩略图

* feat: 肉鸽开始探索前分割卡片

* feat: 肉鸽结算更新缩略图

* feat: 肉鸽战斗成功/失败时更新缩略图

* feat: 事件选择更新图片

* fix: 在缩放时对 BGR 缓冲区长度或尺寸不匹配的情况进行防护

* chore: 添加日志,删除无用的 using

* style: 格式化代码

* fix: 避免在使用 PropertyDependsOn 的同时重复发送依赖属性通知。

* fix: 下载日志错位

* fix: 图片数量限制错误

* feat: 自定义最大缩略图数量

* fix: en 语言下背景图片选择按钮文字无法显示完全

* chore: 新用户标题栏默认不显示配置名称

* chore: 标题栏端口地址默认省略 127.0.0.1: 与 localhost:

* feat: 卡片背景色

* chore: 删除没用的 ColumnDefinitions

* feat: 就要四个字

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-01-02 23:40:26 +08:00

16 KiB
Raw Blame History

Maa-HTTP 接口实现

基于 JNA (Java-Native-Access) 调用 Maa 核心的 HTTP + WebSocket 接口实现. 仅在 Windows 下进行过测试,未在 Linux 下测试过(相信强大的 Linux 用户自己可以解决问题!

接口实现情况

功能名称 接口路径(命令) HTTP实现 WebSocket实现
获取版本号 getVersion Yes Yes
创建连接 connect Yes Yes
添加任务 appendTask Yes Yes
设定任务参数 setTaskParams Yes Yes
开始执行 start Yes Yes
停止执行 stop Yes Yes
销毁实例 destroy Yes Yes
列出实例连接 listInstance Yes Yes
消息回调通知 callBack No Yes
获取截图 getImage Yes No

环境依赖

  1. JDK1.8 +
  2. Maa v3.9.0-alpha +

如何编译

.\gradlew.bat jar

使用方法

  1. 把他丢进 Maa 文件夹下,形成如下文件结构.备注: 启动脚本Maa-HTTP-Server-startup.bat.

    MaaCoreArknights_v3.9.0-beta.8
    │   MAA.exe
    │   MaaCore.dll
    │   ...
    └───Java-HTTP
        │   Maa-HTTP-0.0.1.jar
        │   Maa-HTTP-Server-startup.bat
    
  2. 双击Maa-HTTP-Server-startup.bat启动.

  3. 默认端口号8848钛金端口,如需修改,请修改 Maa-HTTP-Server-startup.bat 中的-port=8848 .

  4. 当你看到如下内容则启动成功.

2022-05-31 22:20:03.000 [main] INFO  Application - Autoreload is disabled because the development mode is off.
2022-05-31 22:20:03.407 [main] INFO  Application - Application started in 0.458 seconds.
2022-05-31 22:20:03.407 [main] INFO  Application - Application started: io.ktor.server.application.Application@fac80
2022-05-31 22:20:03.717 [DefaultDispatcher-worker-1] INFO  Application - Responding at http://0.0.0.0:8848

接口文档

HTTP 部分

提供了如下功能

功能名称 接口路径
获取版本号 getVersion
创建连接 connect
添加任务 appendTask
设定任务参数 setTaskParams
开始执行 start
停止执行 stop
销毁实例 destroy
列出连接 listInstance
获取截图 getImage

接口名称 获取版本号

1) 请求地址

http://127.0.0.1:8848/API/V1/getVersion

2) 调用方式: HTTP get
3) 请求参数: 无
4) 返回结果示例
{
  "data": {
    "version": "v3.9.0-beta"
  },
  "code": 0,
  "message": "success"
}

接口名称 创建连接
1) 请求地址

http://127.0.0.1:8848/API/V1/connect

2) 调用方式: HTTP post
3) 请求参数
{
  "adbPath": "C:\\MaaCoreArknights3\\platform-tools\\adb.exe",
  "host": "127.0.0.1:62001",
  "detailJson": ""
}
Post 参数
字段名称 字段说明 类型 必填 备注
adbPath ADB地址 String Y -
host 实例地址 String Y -
detailJson 有什么用我也不知道,反正就是有 String N -
4) 请求返回结果
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 给连接实例创建的ID String -
result 是否成功 Boolean -


接口名称 添加任务
1) 请求地址

http://127.0.0.1:8848/API/V1/appendTask

2) 调用方式: HTTP post
3) 请求参数
{
  "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
  "type": "Fight",
  "params": {
    "stage": "LastBattle"
  }
}
Post 参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
type 任务类型,此次示例为理智作战战斗,详情参考集成文档 String Y -
params 任务参数 Json Y -
4) 请求返回结果
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "taskId": 0
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 实例ID String -
taskId 任务ID,为0则失败 Int -

接口名称 设定任务参数
1) 请求地址

http://127.0.0.1:8848/API/V1/setTaskParams

2) 调用方式: HTTP post
3) 请求参数
{
  "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
  "type": "Fight",
  "taskId": 0,
  "params": {
    "stage": "LastBattle"
  }
}
Post 参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
taskId 任务ID Int Y -
type 任务类型,此次示例为理智作战战斗,详情参考集成文档 String Y -
params 任务参数 Json Y -
4) 请求返回结果
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": false
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 给连接实例创建的ID String -
result 是否成功 Boolean -

接口名称 开始执行
1) 请求地址

http://127.0.0.1:8848/API/V1/start

2) 调用方式: HTTP post
3) 请求参数
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
4) 请求返回结果
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 给连接实例创建的ID String -
result 是否成功 Boolean -

接口名称 停止执行,清空任务链
1) 请求地址

http://127.0.0.1:8848/API/V1/stop

2) 调用方式: HTTP post
3) 请求参数
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
4) 请求返回结果
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 给连接实例创建的ID String -
result 是否成功 Boolean -

接口名称 销毁实例
1) 请求地址

http://127.0.0.1:8848/API/V1/destroy

2) 调用方式: HTTP post
3) 请求参数
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
4) 请求返回结果
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 给连接实例创建的ID String -
result 是否成功 Boolean -

接口名称 列出实例连接
1) 请求地址

http://127.0.0.1:8848/API/V1/listInstance

2) 调用方式: HTTP get
3) 请求参数: 无
4) 请求返回结果
{
  "data": {
    "list": [
      {
        "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
        "host": "127.0.0.1:62026",
        "adbPath": "C:\\Users\\atmzx\\Desktop\\MaaCoreArknights3\\platform-tools\\adb.exe",
        "uuid": "",
        "status": 0
      }
    ]
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称 字段说明 类型 备注
id 实例ID String -
host 连接的Host String -
adbPath 使用的Adb地址 String -
uuid 设备备ID保留 String -
status 0待机中,1任务执行中 Int -

接口名称 获取截图
1) 请求地址

http://127.0.0.1:8848/API/V1/getImage

2) 调用方式: HTTP get
3) 请求参数
Get参数
字段名称 字段说明 类型 必填 备注
id 创建连接返回的实例ID String Y -
4) 请求返回结果: 图片内容, PNG 格式

WebSocket 部分

请求地址(没错跟HTTP同样是8848钛金端口

ws://127.0.0.1:8848/API/V1

提供了如下功能

功能名称 命令
获取版本号 getVersion
创建连接 connect
添加任务 appendTask
设定任务参数 setTaskParams
开始执行 start
停止执行 stop
销毁实例 destroy
列出实例连接 listInstance
消息回调通知 callBack

所有的的WebSocket接口跟HTTP接口请求响应参数均完全一致


接口名称 获取版本号
{
  "command": "getVersion",
  "msgId": 114514,
  "data": {}
}
字段名称 字段说明 类型 必填 备注
command 操作命令 String ,Y -
msgId 消息ID服务端收到此次请求会用同一个ID答复便于请求响应关联 Int Y -
data 请求参数请参考同名接口的HTTP接口文档与HTTP接口完全一致 Json Y -
请求返回结果
{
  "data": {
    "version": "v3.9.0-beta"
  },
  "command": "getVersion",
  "msgId": 114514,
  "code": 0,
  "message": "success"
}
字段名称 字段说明 类型 备注
command 操作命令,与请求一致 String -
msgId 消息ID此次请求的消息ID为114514则响应也是114514 Int -
data 响应内容,请参考同名接口的HTTP接口文档与HTTP接口完全一致 Json -

接口名称 创建连接
{
  "command": "connect",
  "msgId": 114514,
  "data": {
    "adbPath": "C:\\Users\\atmzx\\Desktop\\MaaCoreArknights3\\platform-tools\\adb.exe",
    "host": "127.0.0.1:62001"
  }
}
字段名称 字段说明 类型 必填 备注
command 操作命令 String ,Y -
msgId 消息ID服务端收到此次请求会用同一个ID答复便于请求响应关联 Int Y -
data 请求参数请参考同名接口的HTTP文档与HTTP接口完全一致 Json Y -
请求返回结果
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": true
  },
  "command": "connect",
  "msgId": 114514,
  "code": 0,
  "message": "success"
}
字段名称 字段说明 类型 备注
command 操作命令,与请求一致 String -
msgId 消息ID此次请求的消息ID为114514则响应也是114514 Int -
data 响应内容,请参考同名接口的HTTP接口文档与HTTP接口完全一致 Json -

appendTask setTaskParams start stop等接口不再描述均可遵循以上规则参考HTTP接口文档实现。


接口名称 回调消息
返回结果示例
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "logId": 1,
    "msg": 2,
    "details": {
      "uuid": "",
      "details": {
        "adb": "C:\\MaaCoreArknights3\\platform-tools\\adb.exe",
        "address": "127.0.0.1:62001",
        "config": "General",
        "width": 1280,
        "height": 720
      },
      "what": "ResolutionGot",
      "why": ""
    }
  },
  "command": "callBack",
  "msgId": 0,
  "code": 0,
  "message": "success"
}
字段名称 字段说明 类型 备注
command 操作命令,callBack类型 String -
msgId 消息IDcallBack 一律为0 Int -
data 响应内容,详情参考集成文档 Json -