const permissionsScreenshot = screenshotRequest()
, strokeWidth = 24, textSize = 50,
options = {
dp: 1,
minDst: 80,
param1: 100,
param2: 45,
minRadius: 180,
maxRadius: 100,
}
if (!requestScreenCapture()) {
toast("请求截图失败");
exit();
} else {
permissionsScreenshot && permissionsScreenshot.interrupt()
sleep(2000)
screen = captureScreen();
toastLog("截图成功")
霍夫找圆(screen);
}
function 霍夫找圆(screen) {
let medianBlurImg = images.medianBlur(screen, 3)
let grayscaleImg = images.grayscale(medianBlurImg);
medianBlurImg.recycle();
let findBalls = images.findCircles(grayscaleImg, options);
grayscaleImg.recycle();
let haveBalls = findBalls && findBalls.length > 0;
if (haveBalls) {
toastLog("有圆" + findBalls.length + "个");
start(findBalls)
} else {
toastLog("无圆结束");
}
}
function start(dataList) {
window = floaty.rawWindow(
<frame id="action" w="{{device.width}}" h="{{device.height}}">
<canvas id="canvas" layout_weight="1" />
</frame>
);
window.canvas.on("draw", (canvas) => {
let circlePaint = new Paint();
circlePaint.setStrokeWidth(strokeWidth);
circlePaint.setColor(colors.parseColor("#FF0000"));
circlePaint.setStyle(Paint.Style.STROKE);
let textPaint = new Paint();
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTextSize(textSize);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setColor(colors.parseColor("#f000ff"));
var len = dataList.length;
for (var i = 0; i < len; i++) {
let data = dataList[i];
canvas.drawCircle(data.x, data.y, data.radius + 5, circlePaint);
canvas.drawText(i + "", data.x, data.y, textPaint);
}
});
setTimeout(() => { window.close() }, 8000);
}
function screenshotRequest() {
console.log("开启截图权限")
return threads.start(function () {
while (true)
if (text("立即开始").exists()) {
sleep(500)
Bounds(text("立即开始").findOne())
} else if (text("允许").exists()) {
sleep(500)
Bounds(text("允许").findOne())
}
})
}
function Bounds(obj) {
try {
obs = obj.bounds();
click((Math.abs(obs.left) + Math.abs(obs.right)) / 2, (Math.abs(obs.top) + Math.abs(obs.bottom)) / 2);
} catch (e) {
Bounds(obj);
}
}