mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-15 17:30:27 +08:00
@@ -124,7 +124,8 @@ MAA 的意思是 MAA Assistant Arknights
|
||||
- [Python 接口](src/Python/asst.py):[集成示例](src/Python/sample.py)
|
||||
- [Golang 接口](src/Golang/maa/):[集成示例](src/Golang/cli.go)(已停止维护 orz)
|
||||
- [Dart 接口](src/dart/)
|
||||
- [Java 接口](src/Java/Maaj):[集成示例](src/Java/Maaj/src/main/java/com/iguigui/maaj/MaaJavaSample.java)
|
||||
- [Java 接口](src/Java/Maaj/src/main/java/com/iguigui/maaj/easySample/MeoAssistant.java):[集成示例](src/Java/Maaj/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java)
|
||||
- [HTTP接口](src/Java/Maaj/Readme.md)
|
||||
- [集成文档](docs/集成文档.md)
|
||||
- [回调消息协议](docs/回调消息协议.md)
|
||||
- [任务流程协议](docs/任务流程协议.md)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Maa-HTTP接口实现
|
||||
|
||||
本项目为通过JNA(Java-Native-Access)调用Maa核心实现的HTTP+WebSocket接口实现.
|
||||
基于JNA(Java-Native-Access)调用Maa核心的HTTP+WebSocket接口实现.
|
||||
仅在Windows下进行过测试,未在Linux下测试过(相信强大的Linux用户自己可以解决问题!
|
||||
|
||||
## 接口实现情况
|
||||
|
||||
@@ -13,8 +14,9 @@
|
||||
| 开始执行 | start | Yes | Yes |
|
||||
| 停止执行 | stop | Yes | Yes |
|
||||
| 销毁实例 | destroy | Yes | Yes |
|
||||
| 列出实例连接 | listInstance | Yes | Yes |
|
||||
| 列出实例连接 | listInstance | Yes | Yes |
|
||||
| 消息回调通知 | callBack | No | Yes |
|
||||
| 获取截图 | getImage | Yes | No |
|
||||
|
||||
## 环境依赖
|
||||
|
||||
@@ -27,7 +29,7 @@
|
||||
|
||||
## 使用方法
|
||||
|
||||
1. 把他丢进Maa文件夹下,形成如下文件结构.
|
||||
1. 把他丢进Maa文件夹下,形成如下文件结构.备注: 启动脚本[Maa-HTTP-Server-startup.bat](Maa-HTTP-Server-startup.bat).
|
||||
|
||||
```
|
||||
MeoAssistantArknights_v3.9.0-beta.8
|
||||
@@ -66,6 +68,7 @@ MeoAssistantArknights_v3.9.0-beta.8
|
||||
| 停止执行 | stop |
|
||||
| 销毁实例 | destroy |
|
||||
| 列出连接 | listInstance |
|
||||
| 获取截图 | getImage |
|
||||
|
||||
---
|
||||
|
||||
@@ -418,6 +421,29 @@ MeoAssistantArknights_v3.9.0-beta.8
|
||||
| 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钛金端口
|
||||
|
||||
@@ -161,6 +161,13 @@ data class DestroyRequest(
|
||||
val id: String,
|
||||
)
|
||||
|
||||
|
||||
@Serializable
|
||||
data class GetImage(
|
||||
@SerialName("id")
|
||||
val id: String,
|
||||
)
|
||||
|
||||
@SerialName("connect")
|
||||
@Serializable
|
||||
data class WsRequest(
|
||||
|
||||
@@ -3,10 +3,12 @@ package com.iguigui.maaj.routing
|
||||
import com.iguigui.maaj.dto.*
|
||||
import com.iguigui.maaj.service.MaaService
|
||||
import com.iguigui.maaj.service.MaaService.appendTask
|
||||
import io.ktor.http.*
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.request.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
import io.ktor.utils.io.*
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
|
||||
|
||||
@@ -63,6 +65,18 @@ fun Application.httpRouting() {
|
||||
val list = MaaService.listInstance()
|
||||
call.respond(ListInstanceResponse(list).wapperToHttpResponse())
|
||||
}
|
||||
get("/getImage") {
|
||||
val id = call.request.queryParameters["id"]
|
||||
id?.let {
|
||||
MaaService.getImage(it)?.run {
|
||||
call.respondBytes(this, ContentType("image", "png"))
|
||||
}
|
||||
}
|
||||
}
|
||||
post("/listInstance") {
|
||||
val list = MaaService.listInstance()
|
||||
call.respond(ListInstanceResponse(list).wapperToHttpResponse())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,4 +82,16 @@ class MaaInstance(
|
||||
fun stop() = instance.AsstStop(pointer)
|
||||
fun destroy() = instance.AsstDestroy(pointer)
|
||||
|
||||
fun getImage(): ByteArray? {
|
||||
val size = 1024 * 1024 * 6
|
||||
val byteArray = ByteArray(size)
|
||||
val length = instance.AsstGetImage(pointer, byteArray, size.toLong())
|
||||
if (length == 0L) {
|
||||
return null
|
||||
}
|
||||
val target = ByteArray(length.toInt())
|
||||
System.arraycopy(byteArray,0,target,0,length.toInt())
|
||||
return target
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ object MaaService {
|
||||
val meoAssistant: MeoAssistant by lazy {
|
||||
var maaPath = File(File("").absolutePath).parent
|
||||
logger.info("maaPath $maaPath")
|
||||
// maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3"
|
||||
maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3"
|
||||
System.setProperty("jna.library.path", maaPath)
|
||||
val load = Native.load("MeoAssistant", MeoAssistant::class.java)
|
||||
load.AsstLoadResource(maaPath)
|
||||
@@ -95,4 +95,8 @@ object MaaService {
|
||||
this.wsConnection -= connection
|
||||
}
|
||||
|
||||
fun getImage(id: String): ByteArray? {
|
||||
return instancePool[id]?.getImage()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user