牙叔教程 简单易学
使用场景
需要语音朗读的图片
autojs版本
![](https://img.haomeiwen.com/i17665846/09e21d259ce3fb4e.png)
get知识点
- 浩然ocr
- 讯飞语音合成webapi
- Hmacsha256加密
- base64
- MediaPlayer
- 安卓自带语音TTS
- 悬浮窗
- loadsh
- events.broadcast
代码简介
1. 监听用户点击, 使用的是悬浮窗, 用户点击屏幕, 实际上点到了悬浮窗上
2. 语音有三种
- 讯飞
- 百度
- 手机自带TTS
3. 提取离手指最近的文字块, 先取上面, 再取下面, 最后排序
代码详解
1, 保持悬浮窗不被关闭
setInterval(function () {}, 1000);
2. 停止别的脚本
engines.all().map((ScriptEngine) => {
if (engines.myEngine().toString() !== ScriptEngine.toString()) {
ScriptEngine.forceStop();
}
});
3. 请求截图
if (!requestScreenCapture()) {
toast("请求截图失败");
exit();
}
4. 所有功能全部模块化, 方便复用
let _ = require("lodash");
let 创建全屏悬浮窗 = require("./创建全屏悬浮窗");
let 设置点击监听 = require("./设置点击监听");
let 语音 = require("./语音");
let 提取离手指最近的文字块集合 = require("./提取离手指最近的文字块集合");
let ocr = require("./ocr");
5. 从点击到朗读文字的大致步骤
events.broadcast.on("点击的坐标", function (点击的坐标) {
let filePath = 截屏();
let textBlockList = ocr(filePath);
let x = 点击的坐标.x;
let y = 点击的坐标.y;
let arr = 提取离手指最近的文字块集合(x, y, textBlockList);
if (arr.length < 1) {
toastLog("屏幕上没有文字");
} else {
var len = arr.length;
let dataList = [];
for (var i = 0; i < len; i++) {
dataList.push(arr[i].labelName);
}
let data = dataList.join("\n");
语音(data);
// 语音(data, "讯飞");
// 语音(data, "百度");
}
});
6. 浩然ocr识别文字
let ocr0 = $plugins.load("com.hraps.ocr");
let img = images.read(imgPath);
let bitmap = img.getBitmap();
let results = ocr0.detect(bitmap, 1);
参考文章
声明
部分内容来自网络
![](https://img.haomeiwen.com/i17665846/7ba251eb411e27e3.jpg)
网友评论