新增舰R脚本
This commit is contained in:
113
src/main/java/com/yutou/qqbot/utlis/JianRTaskManager.java
Normal file
113
src/main/java/com/yutou/qqbot/utlis/JianRTaskManager.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package com.yutou.qqbot.utlis;
|
||||
|
||||
import com.yutou.qqbot.data.JianRScriptData;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class JianRTaskManager {
|
||||
private static JianRTaskManager instance;
|
||||
private JianRScriptData task;
|
||||
private boolean running = false;
|
||||
private int runIndex = 0;
|
||||
private String log;
|
||||
|
||||
public static JianRTaskManager getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new JianRTaskManager();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
private JianRTaskManager() {
|
||||
|
||||
}
|
||||
|
||||
public void setTask(JianRScriptData data) {
|
||||
task = data;
|
||||
String s = RedisTools.get("jianrScript_RunIndex_" + data.getName());
|
||||
if (s != null) {
|
||||
runIndex = Integer.parseInt(s);
|
||||
}
|
||||
}
|
||||
|
||||
public void start() {
|
||||
running = true;
|
||||
new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (running) {
|
||||
try {
|
||||
log("已运行: " + runIndex + " 次");
|
||||
for (JianRScriptData.Script script : task.getRun()) {
|
||||
log(script.getName());
|
||||
if (script.getModel().equals(JianRScriptData.Script.ScriptModel.CLICK)) {
|
||||
adbTap(task.getDevice(), script);
|
||||
}
|
||||
try {
|
||||
Thread.sleep((long) getRandom(0, script.getRandomNextWaitTime(), script.getNextWaitTime()));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
runIndex++;
|
||||
RedisTools.set("jianrScript_RunIndex_" + task.getName(), runIndex + "");
|
||||
log("循环一次任务");
|
||||
} catch (Exception e) {
|
||||
running = false;
|
||||
}
|
||||
|
||||
}
|
||||
log("终止任务");
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
task = null;
|
||||
running = false;
|
||||
}
|
||||
|
||||
public int getRunIndex() {
|
||||
return runIndex;
|
||||
}
|
||||
|
||||
public boolean isRunning() {
|
||||
return running;
|
||||
}
|
||||
|
||||
private void adbTap(String deviceId, JianRScriptData.Script script) {
|
||||
String exec = String.format("adb -s %s shell input tap %f %f",
|
||||
deviceId,
|
||||
getRandom(script.getRx(), script.getX()),
|
||||
getRandom(script.getRy(), script.getY()));
|
||||
AppTools.exec(exec
|
||||
, null, false, false);
|
||||
}
|
||||
|
||||
private void log(String log) {
|
||||
this.log = String.format("[%s]%s",
|
||||
AppTools.getToDayNowTimeToString(),
|
||||
log);
|
||||
}
|
||||
|
||||
private float getRandom(int origin, int randomNum, int x) {
|
||||
Random random = new Random();
|
||||
return x + random.nextFloat(origin, randomNum);
|
||||
}
|
||||
|
||||
private float getRandom(int randomNum, int x) {
|
||||
return getRandom(-randomNum, randomNum, x);
|
||||
}
|
||||
|
||||
public String getTaskName() {
|
||||
if (task != null) {
|
||||
return task.getName();
|
||||
}
|
||||
return "没有任务在运行";
|
||||
}
|
||||
|
||||
public String getLog() {
|
||||
return log;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user