From be5ff961252058ff2db27ea2278491727447d45b Mon Sep 17 00:00:00 2001 From: iguigui Date: Wed, 1 Jun 2022 20:54:50 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat.=E5=A2=9E=E5=8A=A0getImage=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Java/Maaj/Readme.md | 2 +- .../src/main/java/com/iguigui/maaj/dto/request.kt | 7 +++++++ .../java/com/iguigui/maaj/routing/HttpRouting.kt | 14 ++++++++++++++ .../java/com/iguigui/maaj/service/MaaService.kt | 4 ++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Java/Maaj/Readme.md b/src/Java/Maaj/Readme.md index 2440f9b007..8577eca5fb 100644 --- a/src/Java/Maaj/Readme.md +++ b/src/Java/Maaj/Readme.md @@ -1,6 +1,6 @@ # Maa-HTTP接口实现 -本项目为通过JNA(Java-Native-Access)调用Maa核心实现的HTTP+WebSocket接口实现. +基于JNA(Java-Native-Access)调用Maa核心的HTTP+WebSocket接口实现. ## 接口实现情况 diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/dto/request.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/dto/request.kt index 24127bdddd..7130fbc41b 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/dto/request.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/dto/request.kt @@ -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( diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt index fe3e5baaf7..ed9502f7e7 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt @@ -7,6 +7,7 @@ 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 +64,19 @@ 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) + } + call.response.headers + //todo + } + post("/listInstance") { + val list = MaaService.listInstance() + call.respond(ListInstanceResponse(list).wapperToHttpResponse()) + } } } } diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt index 16645b345c..9e8d45ef1a 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt @@ -95,4 +95,8 @@ object MaaService { this.wsConnection -= connection } + fun getImage(id: String) : ByteArray? { + return instancePool[id]?.getImage() + } + } From 2d630c6c5266096e889d090df9be12e76651b858 Mon Sep 17 00:00:00 2001 From: guigui Date: Fri, 3 Jun 2022 01:14:43 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat.HTTP=E5=A2=9E=E5=8A=A0getImage?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iguigui/maaj/routing/HttpRouting.kt | 8 ++++---- .../java/com/iguigui/maaj/service/MaaInstance.kt | 12 ++++++++++++ .../main/java/com/iguigui/maaj/service/MaaService.kt | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt index ed9502f7e7..0d3025cd7c 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/routing/HttpRouting.kt @@ -3,6 +3,7 @@ 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.* @@ -67,11 +68,10 @@ fun Application.httpRouting() { get("/getImage") { val id = call.request.queryParameters["id"] id?.let { - - MaaService.getImage(it) + MaaService.getImage(it)?.run { + call.respondBytes(this, ContentType("image", "png")) + } } - call.response.headers - //todo } post("/listInstance") { val list = MaaService.listInstance() diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt index 7209468f40..7167ae4b52 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaInstance.kt @@ -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 + } + } diff --git a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt index 9e8d45ef1a..c04fa91bb7 100644 --- a/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt +++ b/src/Java/Maaj/src/main/java/com/iguigui/maaj/service/MaaService.kt @@ -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,7 +95,7 @@ object MaaService { this.wsConnection -= connection } - fun getImage(id: String) : ByteArray? { + fun getImage(id: String): ByteArray? { return instancePool[id]?.getImage() } From 27070370ea3cc0f7916bfef6117800b7a11ef8c0 Mon Sep 17 00:00:00 2001 From: guigui Date: Sat, 4 Jun 2022 19:55:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?doc.=E4=BC=98=E5=8C=96HTTP=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Java/Maaj/Readme.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Java/Maaj/Readme.md b/src/Java/Maaj/Readme.md index 8577eca5fb..ca11df5c6a 100644 --- a/src/Java/Maaj/Readme.md +++ b/src/Java/Maaj/Readme.md @@ -13,8 +13,9 @@ | 开始执行 | start | Yes | Yes | | 停止执行 | stop | Yes | Yes | | 销毁实例 | destroy | Yes | Yes | -| 列出实例连接 | listInstance | Yes | Yes | +| 列出实例连接 | listInstance | Yes | Yes | | 消息回调通知 | callBack | No | Yes | +| 获取截图 | getImage | Yes | No | ## 环境依赖 @@ -66,6 +67,7 @@ MeoAssistantArknights_v3.9.0-beta.8 | 停止执行 | stop | | 销毁实例 | destroy | | 列出连接 | listInstance | +| 获取截图 | getImage | --- @@ -418,6 +420,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钛金端口 From a7f3bbeea06461e2dc3c4fc333eb937235d4427a Mon Sep 17 00:00:00 2001 From: guigui Date: Sat, 4 Jun 2022 20:08:39 +0800 Subject: [PATCH 4/5] =?UTF-8?q?doc.=E5=BE=AE=E8=B0=83=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=A2=9E=E5=8A=A0HTTP=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=8C=87=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ee291b1332..6111619dc4 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,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) From 2cc514c16d0c9a98005e52b2e905dc7b359d4ba7 Mon Sep 17 00:00:00 2001 From: guigui Date: Sat, 4 Jun 2022 20:20:14 +0800 Subject: [PATCH 5/5] =?UTF-8?q?doc.=E4=BC=98=E5=8C=96HTTP=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Java/Maaj/Readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Java/Maaj/Readme.md b/src/Java/Maaj/Readme.md index ca11df5c6a..d2a1fcba85 100644 --- a/src/Java/Maaj/Readme.md +++ b/src/Java/Maaj/Readme.md @@ -1,6 +1,7 @@ # Maa-HTTP接口实现 基于JNA(Java-Native-Access)调用Maa核心的HTTP+WebSocket接口实现. +仅在Windows下进行过测试,未在Linux下测试过(相信强大的Linux用户自己可以解决问题! ## 接口实现情况 @@ -28,7 +29,7 @@ ## 使用方法 -1. 把他丢进Maa文件夹下,形成如下文件结构. +1. 把他丢进Maa文件夹下,形成如下文件结构.备注: 启动脚本[Maa-HTTP-Server-startup.bat](Maa-HTTP-Server-startup.bat). ``` MeoAssistantArknights_v3.9.0-beta.8