ms-vite-plugin 1.4.49 → 1.4.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/mcp/doc-tools.js +1 -1
- package/dist/mcp/docs-service.js +1 -1
- package/dist/mcp/types.d.ts +1 -1
- package/dist/mcp/types.js +1 -1
- package/dist/project.js +1 -1
- package/docs/AGENTS.md +3 -2
- package/docs/SKILL.md +2 -1
- package/docs/apilua/action.md +1013 -0
- package/docs/apilua/appleocr.md +281 -0
- package/docs/apilua/cloud.md +183 -0
- package/docs/apilua/config.md +181 -0
- package/docs/apilua/cryptoUtils.md +253 -0
- package/docs/apilua/device.md +485 -0
- package/docs/apilua/dotocr.md +230 -0
- package/docs/apilua/file.md +554 -0
- package/docs/apilua/global.md +654 -0
- package/docs/apilua/hid.md +1126 -0
- package/docs/apilua/hotUpdate.md +167 -0
- package/docs/apilua/http.md +427 -0
- package/docs/apilua/image.md +1177 -0
- package/docs/apilua/ime.md +283 -0
- package/docs/apilua/logger.md +294 -0
- package/docs/apilua/media.md +283 -0
- package/docs/apilua/mysql.md +445 -0
- package/docs/apilua/netCard.md +224 -0
- package/docs/apilua/node.md +264 -0
- package/docs/apilua/opencv.md +870 -0
- package/docs/apilua/paddleocr.md +324 -0
- package/docs/apilua/pip.md +359 -0
- package/docs/apilua/system.md +686 -0
- package/docs/apilua/tomatoocr.md +461 -0
- package/docs/apilua/tts.md +330 -0
- package/docs/apilua/ui.md +1033 -0
- package/docs/apilua/utils.md +222 -0
- package/docs/apilua/yolo.md +324 -0
- package/docs/apilua/yolocls.md +276 -0
- package/docs/mcp-agent-description.md +5 -4
- package/docs/quick/vscode/createProject.md +84 -0
- package/docs/quick/vscode/packProject.md +17 -0
- package/package.json +2 -1
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# PaddleOCR 模块 (PaddleOCR)
|
|
2
|
+
|
|
3
|
+
PaddleOCR 模块基于百度飞桨 PaddleOCR 技术,提供强大的光学字符识别(OCR)功能,支持中英文文本识别,可用于屏幕截图、图片文件等多种输入源的文字识别。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **自动加载**: 识别方法会自动加载所需模型,无需先手动加载
|
|
8
|
+
- **PP-OCRv5**: 可通过 `loadV5` 手动加载 PP-OCRv5 模型
|
|
9
|
+
- **多源识别**: 支持屏幕截图、图片文件、URL 等多种输入源
|
|
10
|
+
- **区域识别**: 支持指定区域的精确文字识别
|
|
11
|
+
- **结构化结果**: 提供详细的文本位置、置信度和方向信息
|
|
12
|
+
- **资源释放**: 可在需要时释放 OCR 资源
|
|
13
|
+
|
|
14
|
+
## 数据类型
|
|
15
|
+
|
|
16
|
+
### OCRResult 接口
|
|
17
|
+
|
|
18
|
+
识别结果的数据结构,包含完整的文本信息和位置数据:
|
|
19
|
+
|
|
20
|
+
```lua
|
|
21
|
+
---@class OCRResult
|
|
22
|
+
---@field text string 识别的文本内容
|
|
23
|
+
---@field confidence number 识别置信度 (0-1)
|
|
24
|
+
---@field x number 文本区域左上角 x 坐标
|
|
25
|
+
---@field y number 文本区域左上角 y 坐标
|
|
26
|
+
---@field ex number 文本区域右下角 x 坐标
|
|
27
|
+
---@field ey number 文本区域右下角 y 坐标
|
|
28
|
+
---@field width number 文本区域宽度
|
|
29
|
+
---@field height number 文本区域高度
|
|
30
|
+
---@field centerX number 文本区域中心点 x 坐标
|
|
31
|
+
---@field centerY number 文本区域中心点 y 坐标
|
|
32
|
+
---@field angle number 文本区域角度
|
|
33
|
+
---@field orientation number 文本区域方向 0 横向 1 竖向
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**数据结构说明:**
|
|
37
|
+
|
|
38
|
+
| 字段 | 类型 | 描述 |
|
|
39
|
+
| ------------------ | ------ | ----------------------------------------------------- |
|
|
40
|
+
| `text` | string | 识别出的文本内容 |
|
|
41
|
+
| `confidence` | number | 识别置信度,范围 0-1,值越高表示识别越准确 |
|
|
42
|
+
| `x, y, ex, ey` | number | 文本区域的坐标,分别为左上角和右下角的 x、y 坐标 |
|
|
43
|
+
| `width, height` | number | 文本区域的宽度和高度 |
|
|
44
|
+
| `centerX, centerY` | number | 文本区域的中心点坐标 |
|
|
45
|
+
| `angle` | number | 文本区域的角度,范围 -90 到 90 度,正值表示逆时针旋转 |
|
|
46
|
+
| `orientation` | number | 文本区域的方向,0 表示横向,1 表示竖向 |
|
|
47
|
+
|
|
48
|
+
## API 参考
|
|
49
|
+
|
|
50
|
+
### 模型管理
|
|
51
|
+
|
|
52
|
+
#### loadV5 - 手动加载 PP-OCRv5 模型。
|
|
53
|
+
|
|
54
|
+
识别方法默认自动加载模型。只有需要切换到 PP-OCRv5 或指定 GPU 参数时才调用 `loadV5`。PaddleOCR 同一时间只保留一个 active 模型,`loadV5` 加载成功后会替换已加载模型。
|
|
55
|
+
|
|
56
|
+
```lua
|
|
57
|
+
---@param maxSideLen number?
|
|
58
|
+
---@param useGpu boolean?
|
|
59
|
+
---@return boolean
|
|
60
|
+
function loadV5(maxSideLen, useGpu) end
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**参数:**
|
|
64
|
+
|
|
65
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
66
|
+
| ------------ | ------- | -------- | ------ | ---------------------------- |
|
|
67
|
+
| `maxSideLen` | number | 否 | 640 | 检测阶段输入最大边长 |
|
|
68
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
69
|
+
|
|
70
|
+
**返回值:**
|
|
71
|
+
|
|
72
|
+
| 类型 | 描述 |
|
|
73
|
+
| ------- | ----------------------------------------------------------- |
|
|
74
|
+
| boolean | 加载成功或模型已加载返回 `true`,失败返回 `false` |
|
|
75
|
+
|
|
76
|
+
**示例:**
|
|
77
|
+
|
|
78
|
+
```lua
|
|
79
|
+
local paddleocr = require("paddleocr")
|
|
80
|
+
|
|
81
|
+
-- 手动加载 PP-OCRv5 模型
|
|
82
|
+
local loaded = paddleocr.loadV5(640, false)
|
|
83
|
+
print("PP-OCRv5 加载结果: " .. tostring(loaded))
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### loadModel - 按模型 ID 手动加载内置 PaddleOCR 模型。
|
|
87
|
+
|
|
88
|
+
识别和查找方法默认自动加载 `ppocr-v6-small`。只有需要切换模型或指定 GPU 参数时才调用 `loadModel`。同一时间只保留一个 active 模型;检测长边请使用 `setMaxSideLen`。
|
|
89
|
+
|
|
90
|
+
```lua
|
|
91
|
+
---@param modelId string
|
|
92
|
+
---@param useGpu boolean?
|
|
93
|
+
---@return boolean
|
|
94
|
+
function loadModel(modelId, useGpu) end
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**参数:**
|
|
98
|
+
|
|
99
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
100
|
+
| --------- | ------- | -------- | ------ | ------------------------------------------------- |
|
|
101
|
+
| `modelId` | string | 是 | | `"ppocr-v6-tiny"` / `"ppocr-v6-small"` / `"ppocr-v5"` |
|
|
102
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
103
|
+
|
|
104
|
+
**返回值:**
|
|
105
|
+
|
|
106
|
+
| 类型 | 描述 |
|
|
107
|
+
| ------- | --------------------------------------------------------------------- |
|
|
108
|
+
| boolean | 加载成功或目标模型已加载返回 `true`,模型 ID 不支持或加载失败返回 `false` |
|
|
109
|
+
|
|
110
|
+
**示例:**
|
|
111
|
+
|
|
112
|
+
```lua
|
|
113
|
+
local paddleocr = require("paddleocr")
|
|
114
|
+
paddleocr.loadModel("ppocr-v6-tiny", false)
|
|
115
|
+
local loaded = paddleocr.loadModel("ppocr-v6-small", false)
|
|
116
|
+
print("PP-OCRv6 small 加载结果: " .. tostring(loaded))
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### setMaxSideLen - 单独设置检测阶段输入最大边长。
|
|
120
|
+
|
|
121
|
+
只调整后续检测输入缩放,不会重新加载已加载模型。传 `0` 或负数时使用 `768`。
|
|
122
|
+
|
|
123
|
+
```lua
|
|
124
|
+
---@param maxSideLen number?
|
|
125
|
+
---@return boolean
|
|
126
|
+
function setMaxSideLen(maxSideLen) end
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**参数:**
|
|
130
|
+
|
|
131
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
132
|
+
| ------------ | ------ | -------- | ------ | ----------------------------------------- |
|
|
133
|
+
| `maxSideLen` | number | 否 | 768 | 输入图像的最大边长;传 0 或负数时使用 768 |
|
|
134
|
+
|
|
135
|
+
**返回值:**
|
|
136
|
+
|
|
137
|
+
| 类型 | 描述 |
|
|
138
|
+
| ------- | ------------------- |
|
|
139
|
+
| boolean | 设置成功返回 `true` |
|
|
140
|
+
|
|
141
|
+
**示例:**
|
|
142
|
+
|
|
143
|
+
```lua
|
|
144
|
+
local paddleocr = require("paddleocr")
|
|
145
|
+
paddleocr.setMaxSideLen(960)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 文字识别
|
|
149
|
+
|
|
150
|
+
#### recognize - 执行 OCR 识别。
|
|
151
|
+
|
|
152
|
+
传入裁剪区域时,返回坐标相对于裁剪区域。全屏识别时 `x/y/ex/ey` 传 `0`。
|
|
153
|
+
|
|
154
|
+
```lua
|
|
155
|
+
---@param input string
|
|
156
|
+
---@param x number?
|
|
157
|
+
---@param y number?
|
|
158
|
+
---@param ex number?
|
|
159
|
+
---@param ey number?
|
|
160
|
+
---@param confidenceThreshold number?
|
|
161
|
+
---@return OCRResult[]
|
|
162
|
+
function recognize(input, x, y, ex, ey, confidenceThreshold) end
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**参数:**
|
|
166
|
+
|
|
167
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
168
|
+
| --------------------- | ------ | -------- | ------ | ----------------------------------------------------------- |
|
|
169
|
+
| `input` | string | 是 | | 输入源,支持 imageId、URL 字符串、文件路径或 `"screen"` |
|
|
170
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
|
|
171
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
|
|
172
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0 |
|
|
173
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0 |
|
|
174
|
+
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,低于该值的识别结果会被过滤 |
|
|
175
|
+
|
|
176
|
+
**返回值:**
|
|
177
|
+
|
|
178
|
+
| 类型 | 描述 |
|
|
179
|
+
| ------------- | ---------------------------------- |
|
|
180
|
+
| `OCRResult[]` | 识别结果数组,坐标相对于裁剪区域 |
|
|
181
|
+
|
|
182
|
+
**示例:**
|
|
183
|
+
|
|
184
|
+
```lua
|
|
185
|
+
local paddleocr = require("paddleocr")
|
|
186
|
+
local action = require("action")
|
|
187
|
+
|
|
188
|
+
local results = paddleocr.recognize("screen", 100, 100, 500, 300)
|
|
189
|
+
if #results > 0 then
|
|
190
|
+
action.click(results[1].centerX, results[1].centerY)
|
|
191
|
+
end
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
#### recognizeAbs - 执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
195
|
+
|
|
196
|
+
传入裁剪区域时,返回坐标会映射回原图或全屏坐标,可直接用于点击。
|
|
197
|
+
|
|
198
|
+
```lua
|
|
199
|
+
---@param input string
|
|
200
|
+
---@param x number?
|
|
201
|
+
---@param y number?
|
|
202
|
+
---@param ex number?
|
|
203
|
+
---@param ey number?
|
|
204
|
+
---@param confidenceThreshold number?
|
|
205
|
+
---@return OCRResult[]
|
|
206
|
+
function recognizeAbs(input, x, y, ex, ey, confidenceThreshold) end
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**参数:**
|
|
210
|
+
|
|
211
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
212
|
+
| --------------------- | ------ | -------- | ------ | ------------------------------------------------------ |
|
|
213
|
+
| `input` | string | 是 | | 输入源,支持 imageId、URL 字符串、文件路径或 `"screen"` |
|
|
214
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
|
|
215
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
|
|
216
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0 |
|
|
217
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0 |
|
|
218
|
+
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,低于该值的识别结果会被过滤 |
|
|
219
|
+
|
|
220
|
+
**返回值:**
|
|
221
|
+
|
|
222
|
+
| 类型 | 描述 |
|
|
223
|
+
| ------------- | -------------------------------------- |
|
|
224
|
+
| `OCRResult[]` | 识别结果数组,坐标为原图或全屏绝对坐标 |
|
|
225
|
+
|
|
226
|
+
**示例:**
|
|
227
|
+
|
|
228
|
+
```lua
|
|
229
|
+
local paddleocr = require("paddleocr")
|
|
230
|
+
local action = require("action")
|
|
231
|
+
local absResults = paddleocr.recognizeAbs("screen", 100, 100, 500, 300)
|
|
232
|
+
if #absResults > 0 then
|
|
233
|
+
action.click(absResults[1].centerX, absResults[1].centerY)
|
|
234
|
+
end
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### findText - 查找目标文本。
|
|
238
|
+
|
|
239
|
+
传入裁剪区域时,返回坐标相对于裁剪区域。`targets` 可以是字符串数组或逗号分隔字符串。
|
|
240
|
+
|
|
241
|
+
```lua
|
|
242
|
+
---@param input string
|
|
243
|
+
---@param targets string[]|string
|
|
244
|
+
---@param x number?
|
|
245
|
+
---@param y number?
|
|
246
|
+
---@param ex number?
|
|
247
|
+
---@param ey number?
|
|
248
|
+
---@param confidenceThreshold number?
|
|
249
|
+
---@param exactMatch boolean?
|
|
250
|
+
---@return OCRResult[]
|
|
251
|
+
function findText(input, targets, x, y, ex, ey, confidenceThreshold, exactMatch) end
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**参数:**
|
|
255
|
+
|
|
256
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
257
|
+
| --------------------- | ----------------- | -------- | ------ | ------------------------------------------------------------------------ |
|
|
258
|
+
| `input` | string | 是 | | 输入源,支持 imageId、URL 字符串、文件路径或 `"screen"` |
|
|
259
|
+
| `targets` | string[] \| string | 是 | | 目标文本数组或逗号分隔字符串 |
|
|
260
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
|
|
261
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
|
|
262
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0 |
|
|
263
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0 |
|
|
264
|
+
| `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,低于该值的识别结果会被过滤 |
|
|
265
|
+
| `exactMatch` | boolean | 否 | false | 是否完整匹配;`false` 表示包含匹配,`true` 要求整条 OCR 文本等于目标文本 |
|
|
266
|
+
|
|
267
|
+
**返回值:**
|
|
268
|
+
|
|
269
|
+
| 类型 | 描述 |
|
|
270
|
+
| ------------- | ------------------------------------ |
|
|
271
|
+
| `OCRResult[]` | 匹配到的结果数组,坐标相对于裁剪区域 |
|
|
272
|
+
|
|
273
|
+
**示例:**
|
|
274
|
+
|
|
275
|
+
```lua
|
|
276
|
+
local paddleocr = require("paddleocr")
|
|
277
|
+
local hits = paddleocr.findText("screen", { "确定" }, 100, 100, 500, 400, 0.6, false)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### findTextAbs - 查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
281
|
+
|
|
282
|
+
```lua
|
|
283
|
+
---@param input string
|
|
284
|
+
---@param targets string[]|string
|
|
285
|
+
---@param x number?
|
|
286
|
+
---@param y number?
|
|
287
|
+
---@param ex number?
|
|
288
|
+
---@param ey number?
|
|
289
|
+
---@param confidenceThreshold number?
|
|
290
|
+
---@param exactMatch boolean?
|
|
291
|
+
---@return OCRResult[]
|
|
292
|
+
function findTextAbs(input, targets, x, y, ex, ey, confidenceThreshold, exactMatch) end
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**参数:** 与 `findText` 相同;返回坐标为原图或全屏绝对坐标。
|
|
296
|
+
|
|
297
|
+
**示例:**
|
|
298
|
+
|
|
299
|
+
```lua
|
|
300
|
+
local paddleocr = require("paddleocr")
|
|
301
|
+
local action = require("action")
|
|
302
|
+
local absHits = paddleocr.findTextAbs("screen", { "确定" }, 100, 100, 500, 400, 0.6, false)
|
|
303
|
+
if #absHits > 0 then
|
|
304
|
+
action.click(absHits[1].centerX, absHits[1].centerY)
|
|
305
|
+
end
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### 资源管理
|
|
309
|
+
|
|
310
|
+
#### free - 释放 OCR 模型占用的内存资源。
|
|
311
|
+
|
|
312
|
+
```lua
|
|
313
|
+
function free() end
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**示例:**
|
|
317
|
+
|
|
318
|
+
```lua
|
|
319
|
+
local paddleocr = require("paddleocr")
|
|
320
|
+
|
|
321
|
+
-- 使用完毕后释放资源
|
|
322
|
+
paddleocr.free()
|
|
323
|
+
print("OCR 模型资源已释放")
|
|
324
|
+
```
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# 悬浮窗模块 (PIP)
|
|
2
|
+
|
|
3
|
+
悬浮窗模块提供 iOS 画中画(Picture in Picture)悬浮窗能力,可用于显示脚本日志、保活提示或脚本自定义文本。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- **显示模式**:支持日志、保活和自定义三种显示模式;首次安装默认保活
|
|
8
|
+
- **关闭控制**:支持主动关闭悬浮窗
|
|
9
|
+
- **状态查询**:判断悬浮窗是否正在显示
|
|
10
|
+
- **尺寸设置**:日志模式和自定义模式支持设置内容宽高比(实际显示尺寸由系统决定),并按模式分别持久化
|
|
11
|
+
- **日志显示**:日志模式支持设置日志文字大小
|
|
12
|
+
- **自定义文本**:自定义模式支持文本、换行、文字颜色、背景色和文字大小
|
|
13
|
+
|
|
14
|
+
## API 方法
|
|
15
|
+
|
|
16
|
+
### isPipActive - 判断悬浮窗是否打开
|
|
17
|
+
|
|
18
|
+
```lua
|
|
19
|
+
---@return boolean
|
|
20
|
+
function isPipActive() end
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
判断悬浮窗是否当前打开。
|
|
24
|
+
|
|
25
|
+
**返回值:**
|
|
26
|
+
|
|
27
|
+
| 类型 | 描述 |
|
|
28
|
+
| --------- | --------------------------------------------- |
|
|
29
|
+
| `boolean` | `true` 代表开启了悬浮窗,`false` 代表没有开启 |
|
|
30
|
+
|
|
31
|
+
**示例:**
|
|
32
|
+
|
|
33
|
+
```lua
|
|
34
|
+
local pip = require("pip")
|
|
35
|
+
local isActive = pip.isPipActive()
|
|
36
|
+
if isActive then
|
|
37
|
+
print("悬浮窗当前已打开")
|
|
38
|
+
end
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### switchToLogMode - 切换到日志模式
|
|
42
|
+
|
|
43
|
+
```lua
|
|
44
|
+
---@return boolean
|
|
45
|
+
function switchToLogMode() end
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
切换到日志模式并尝试显示悬浮窗日志窗口。首次显示悬浮窗时 App 必须在前台。日志模式会恢复最近一次保存的日志窗口尺寸。
|
|
49
|
+
|
|
50
|
+
**返回值:**
|
|
51
|
+
|
|
52
|
+
| 类型 | 描述 |
|
|
53
|
+
| --------- | ---------------------- |
|
|
54
|
+
| `boolean` | `true` 代表已提交请求 |
|
|
55
|
+
|
|
56
|
+
**示例:**
|
|
57
|
+
|
|
58
|
+
```lua
|
|
59
|
+
local pip = require("pip")
|
|
60
|
+
takeMeToFront()
|
|
61
|
+
local success = pip.switchToLogMode()
|
|
62
|
+
pip.setLogFontSize(10)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### switchToKeepAliveMode - 切换到保活模式
|
|
66
|
+
|
|
67
|
+
```lua
|
|
68
|
+
---@return boolean
|
|
69
|
+
function switchToKeepAliveMode() end
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
切换到保活模式并尝试显示极小高度悬浮窗。首次显示悬浮窗时 App 必须在前台。保活模式不接受脚本尺寸设置。
|
|
73
|
+
|
|
74
|
+
**返回值:**
|
|
75
|
+
|
|
76
|
+
| 类型 | 描述 |
|
|
77
|
+
| --------- | ---------------------- |
|
|
78
|
+
| `boolean` | `true` 代表已提交请求 |
|
|
79
|
+
|
|
80
|
+
**示例:**
|
|
81
|
+
|
|
82
|
+
```lua
|
|
83
|
+
local pip = require("pip")
|
|
84
|
+
takeMeToFront()
|
|
85
|
+
local success = pip.switchToKeepAliveMode()
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### switchToCustomMode - 切换到自定义模式
|
|
89
|
+
|
|
90
|
+
```lua
|
|
91
|
+
---@return boolean
|
|
92
|
+
function switchToCustomMode() end
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
切换到自定义模式并显示脚本设置的自定义文本。首次显示悬浮窗时 App 必须在前台。自定义模式会恢复最近一次保存的自定义窗口尺寸。
|
|
96
|
+
|
|
97
|
+
**返回值:**
|
|
98
|
+
|
|
99
|
+
| 类型 | 描述 |
|
|
100
|
+
| --------- | ---------------------- |
|
|
101
|
+
| `boolean` | `true` 代表已提交请求 |
|
|
102
|
+
|
|
103
|
+
**示例:**
|
|
104
|
+
|
|
105
|
+
```lua
|
|
106
|
+
local pip = require("pip")
|
|
107
|
+
takeMeToFront()
|
|
108
|
+
pip.switchToCustomMode()
|
|
109
|
+
pip.setCustomText("运行中\n进度 1/3")
|
|
110
|
+
pip.setCustomTextColor("#34c759")
|
|
111
|
+
pip.setCustomTextSize(18)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### closeWindow - 关闭悬浮窗
|
|
115
|
+
|
|
116
|
+
```lua
|
|
117
|
+
---@return boolean
|
|
118
|
+
function closeWindow() end
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
关闭悬浮窗。
|
|
122
|
+
|
|
123
|
+
**返回值:**
|
|
124
|
+
|
|
125
|
+
| 类型 | 描述 |
|
|
126
|
+
| --------- | ---------------------- |
|
|
127
|
+
| `boolean` | `true` 代表已提交请求 |
|
|
128
|
+
|
|
129
|
+
**示例:**
|
|
130
|
+
|
|
131
|
+
```lua
|
|
132
|
+
local pip = require("pip")
|
|
133
|
+
local success = pip.closeWindow()
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### setContentSize - 设置内容尺寸
|
|
137
|
+
|
|
138
|
+
```lua
|
|
139
|
+
---@param width number
|
|
140
|
+
---@param height number
|
|
141
|
+
---@return boolean
|
|
142
|
+
function setContentSize(width, height) end
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
设置日志模式或自定义模式的悬浮窗内容尺寸。传入的宽高表示宽高比,不是最终像素尺寸;悬浮窗实际显示的宽高由系统决定。宽度和高度都必须传入有效数字。日志模式和自定义模式会分别保存尺寸;悬浮窗关闭状态和保活模式不会生效。
|
|
146
|
+
|
|
147
|
+
**参数:**
|
|
148
|
+
|
|
149
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
150
|
+
| -------- | ---------------- | ---- | ---------------------------------------------- |
|
|
151
|
+
| `width` | `number` | 是 | 宽度方向比例值(与 `height` 共同决定宽高比,不是像素) |
|
|
152
|
+
| `height` | `number` | 是 | 高度方向比例值(与 `width` 共同决定宽高比,不是像素) |
|
|
153
|
+
|
|
154
|
+
**返回值:**
|
|
155
|
+
|
|
156
|
+
| 类型 | 描述 |
|
|
157
|
+
| --------- | -------------------------------------------------------------------- |
|
|
158
|
+
| `boolean` | `true` 代表尺寸已提交;`false` 代表当前模式不允许设置或宽高无效 |
|
|
159
|
+
|
|
160
|
+
**示例:**
|
|
161
|
+
|
|
162
|
+
```lua
|
|
163
|
+
local pip = require("pip")
|
|
164
|
+
pip.switchToLogMode()
|
|
165
|
+
pip.setContentSize(280, 120)
|
|
166
|
+
|
|
167
|
+
pip.switchToCustomMode()
|
|
168
|
+
pip.setContentSize(120, 180)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### setLogFontSize - 设置日志文字大小
|
|
172
|
+
|
|
173
|
+
```lua
|
|
174
|
+
---@param fontSize number
|
|
175
|
+
---@return boolean
|
|
176
|
+
function setLogFontSize(fontSize) end
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
设置日志模式显示文本的文字大小。该方法只更新日志字号,不会自动切换到日志模式。
|
|
180
|
+
|
|
181
|
+
**参数:**
|
|
182
|
+
|
|
183
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
184
|
+
| ---------- | -------- | ---- | ------------------------ |
|
|
185
|
+
| `fontSize` | `number` | 是 | 日志字号,必须是有效数字 |
|
|
186
|
+
|
|
187
|
+
**返回值:**
|
|
188
|
+
|
|
189
|
+
| 类型 | 描述 |
|
|
190
|
+
| --------- | ---------------------------------------------------------- |
|
|
191
|
+
| `boolean` | `true` 代表日志文字大小已提交;`false` 代表字号无效 |
|
|
192
|
+
|
|
193
|
+
**示例:**
|
|
194
|
+
|
|
195
|
+
```lua
|
|
196
|
+
local pip = require("pip")
|
|
197
|
+
pip.setLogFontSize(10)
|
|
198
|
+
pip.switchToLogMode()
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### setCustomText - 设置自定义文本
|
|
202
|
+
|
|
203
|
+
```lua
|
|
204
|
+
---@param text string
|
|
205
|
+
---@return boolean
|
|
206
|
+
function setCustomText(text) end
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
设置自定义模式显示的纯文本内容。该方法只更新自定义文本数据,不会自动切换到自定义模式。
|
|
210
|
+
|
|
211
|
+
**参数:**
|
|
212
|
+
|
|
213
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
214
|
+
| ------ | -------- | ---- | ------------------------------------------- |
|
|
215
|
+
| `text` | `string` | 是 | 要显示的文本,支持真实换行和字符串中的 `\n` |
|
|
216
|
+
|
|
217
|
+
**返回值:**
|
|
218
|
+
|
|
219
|
+
| 类型 | 描述 |
|
|
220
|
+
| --------- | ---------------------- |
|
|
221
|
+
| `boolean` | `true` 代表文本已提交 |
|
|
222
|
+
|
|
223
|
+
**示例:**
|
|
224
|
+
|
|
225
|
+
```lua
|
|
226
|
+
local pip = require("pip")
|
|
227
|
+
pip.setCustomText("运行中\n进度 1/3")
|
|
228
|
+
pip.switchToCustomMode()
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### setCustomTextColor - 设置自定义文字颜色
|
|
232
|
+
|
|
233
|
+
```lua
|
|
234
|
+
---@param color string
|
|
235
|
+
---@return boolean
|
|
236
|
+
function setCustomTextColor(color) end
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
设置自定义模式显示文本的文字颜色。该方法只更新文字颜色数据,不会自动切换到自定义模式。
|
|
240
|
+
|
|
241
|
+
**参数:**
|
|
242
|
+
|
|
243
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
244
|
+
| ------- | -------- | ---- | ----------------------------------------------------------- |
|
|
245
|
+
| `color` | `string` | 是 | 文字颜色,支持 `RRGGBB`、`RRGGBBAA`,可带 `#` 前缀;末尾 AA 为透明度;无效值使用白色 |
|
|
246
|
+
|
|
247
|
+
**返回值:**
|
|
248
|
+
|
|
249
|
+
| 类型 | 描述 |
|
|
250
|
+
| --------- | -------------------------- |
|
|
251
|
+
| `boolean` | `true` 代表文字颜色已提交 |
|
|
252
|
+
|
|
253
|
+
**示例:**
|
|
254
|
+
|
|
255
|
+
```lua
|
|
256
|
+
local pip = require("pip")
|
|
257
|
+
pip.setCustomTextColor("#34c759")
|
|
258
|
+
pip.switchToCustomMode()
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### setCustomTextSize - 设置自定义文字大小
|
|
262
|
+
|
|
263
|
+
```lua
|
|
264
|
+
---@param fontSize number
|
|
265
|
+
---@return boolean
|
|
266
|
+
function setCustomTextSize(fontSize) end
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
设置自定义模式显示文本的文字大小。该方法只更新文字大小数据,不会自动切换到自定义模式。
|
|
270
|
+
|
|
271
|
+
**参数:**
|
|
272
|
+
|
|
273
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
274
|
+
| ---------- | -------- | ---- | -------------------------- |
|
|
275
|
+
| `fontSize` | `number` | 是 | 文字字号,必须是有效数字 |
|
|
276
|
+
|
|
277
|
+
**返回值:**
|
|
278
|
+
|
|
279
|
+
| 类型 | 描述 |
|
|
280
|
+
| --------- | ------------------------------------------------------ |
|
|
281
|
+
| `boolean` | `true` 代表文字大小已提交;`false` 代表字号无效 |
|
|
282
|
+
|
|
283
|
+
**示例:**
|
|
284
|
+
|
|
285
|
+
```lua
|
|
286
|
+
local pip = require("pip")
|
|
287
|
+
pip.setCustomTextSize(18)
|
|
288
|
+
pip.switchToCustomMode()
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### setCustomBackgroundColor - 设置自定义背景色
|
|
292
|
+
|
|
293
|
+
```lua
|
|
294
|
+
---@param color string
|
|
295
|
+
---@return boolean
|
|
296
|
+
function setCustomBackgroundColor(color) end
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
设置自定义模式显示区域的背景色。该方法只更新背景色数据,不会自动切换到自定义模式。
|
|
300
|
+
|
|
301
|
+
**参数:**
|
|
302
|
+
|
|
303
|
+
| 参数 | 类型 | 必填 | 描述 |
|
|
304
|
+
| ------- | -------- | ---- | ----------------------------------------------------------- |
|
|
305
|
+
| `color` | `string` | 是 | 背景颜色,支持 `RRGGBB`、`RRGGBBAA`,可带 `#` 前缀;末尾 AA 为透明度;无效值使用黑色 |
|
|
306
|
+
|
|
307
|
+
**返回值:**
|
|
308
|
+
|
|
309
|
+
| 类型 | 描述 |
|
|
310
|
+
| --------- | ------------------------ |
|
|
311
|
+
| `boolean` | `true` 代表背景色已提交 |
|
|
312
|
+
|
|
313
|
+
**示例:**
|
|
314
|
+
|
|
315
|
+
```lua
|
|
316
|
+
local pip = require("pip")
|
|
317
|
+
pip.setCustomBackgroundColor("#111111")
|
|
318
|
+
pip.switchToCustomMode()
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## 完整使用示例
|
|
322
|
+
|
|
323
|
+
```lua
|
|
324
|
+
local pip = require("pip")
|
|
325
|
+
takeMeToFront()
|
|
326
|
+
|
|
327
|
+
pip.switchToLogMode()
|
|
328
|
+
pip.setContentSize(280, 120)
|
|
329
|
+
pip.setLogFontSize(10)
|
|
330
|
+
|
|
331
|
+
pip.setCustomText("任务运行中\n1/3")
|
|
332
|
+
pip.setCustomTextColor("#34c759")
|
|
333
|
+
pip.setCustomTextSize(18)
|
|
334
|
+
pip.setCustomBackgroundColor("#111111")
|
|
335
|
+
pip.switchToCustomMode()
|
|
336
|
+
pip.setContentSize(120, 180)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## 注意事项
|
|
340
|
+
|
|
341
|
+
1. **前台限制**:首次切换到日志、保活或自定义显示模式并启动悬浮窗时,App 必须在前台;悬浮窗已启动后可以继续切换显示模式或关闭悬浮窗
|
|
342
|
+
2. **设备兼容性**:仅支持 iOS 15+ 且具备画中画功能的设备
|
|
343
|
+
3. **系统限制**:悬浮窗位置和实际显示尺寸由 iOS 管理
|
|
344
|
+
4. **尺寸持久化**:日志模式和自定义模式分别保存尺寸,互不共用;保活模式不接受脚本尺寸
|
|
345
|
+
5. **日志字号**:日志字号只影响日志模式,保活模式和自定义模式不受影响
|
|
346
|
+
6. **竖向文本**:自定义窗口高度大于宽度时,文本会按逐字符换行方式竖向显示
|
|
347
|
+
|
|
348
|
+
## 故障排除
|
|
349
|
+
|
|
350
|
+
### 悬浮窗无法显示
|
|
351
|
+
|
|
352
|
+
- 确认设备支持悬浮窗功能
|
|
353
|
+
- 检查悬浮窗权限是否已开启
|
|
354
|
+
- 确认应用当前在前台
|
|
355
|
+
|
|
356
|
+
### setContentSize 返回 false
|
|
357
|
+
|
|
358
|
+
- 确认当前模式是日志模式或自定义模式
|
|
359
|
+
- 确认宽度和高度都传入了有效数字
|