Files
CE/app/src/main/java/com/bytecat/algui/ui/Main.java
GP 4747e6bbec refactor(ESP): 重构ESP模块代码结构,提取数据结构到独立类
feat(ESP): 新增实体绘制信息显示功能
fix(ESP): 修复坐标读取和保存的逻辑问题
style(ESP): 统一代码格式和缩进
docs(ESP): 添加关键方法注释
2025-08-14 18:41:57 +08:00

207 lines
7.4 KiB
Java

package com.bytecat.algui.ui;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.app.Activity;
import com.bytecat.algui.AlguiHacker.AlguiRootClient;
import com.bytecat.algui.AlguiHacker.AlguiRootService;
import com.bytecat.algui.AlguiManager.AlguiAssets;
import com.bytecat.algui.AlguiManager.AlguiCallback;
import com.bytecat.algui.AlguiManager.AlguiDocument;
import com.bytecat.algui.AlguiTools.AlguiToolAudio;
import com.bytecat.algui.AlguiTools.AlguiToolNative;
import com.bytecat.algui.AlguiTools.AlguiToolNetwork;
import com.bytecat.algui.AlguiWindows.AlguiWin2FA;
import com.bytecat.algui.AlguiWindows.AlguiWinInform;
import com.bytecat.algui.MainActivity;
import com.bytecat.algui.effect.DynamicArrayList;
import com.bytecat.algui.effect.Notification;
import com.bytecat.algui.ui.button.FloatButton;
import com.topjohnwu.superuser.ipc.RootService;
import java.util.HashMap;
import com.bytecat.algui.effect.ArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.os.Build;
import android.view.Gravity;
import com.bytecat.algui.AlguiViews.AlguiV;
import com.bytecat.algui.ui.category.RemoteLinkWatcher;
import com.bytecat.algui.effect.ModuleManager;
import android.text.TextUtils;
public class Main {
public static boolean alreadyloggin;
public static boolean vt1 = true;
public static boolean vt2 = false;
public static boolean vt3 = false;
// 水印单例,全局可用
public static AlguiV.TVNoSignalText tvNoSignal = null;
private static ExecutorService executor = Executors.newSingleThreadExecutor(); // 创建一个单线程线程池
public static void 音效播放() {
if (vt1) {
AlguiToolAudio.playAudio(aContext, "vt1.ogg");
}
if (vt2) {
AlguiToolAudio.playAudio(aContext, "vt2.ogg");
}
if (vt3) {
AlguiToolAudio.playAudio(aContext, "vt3.ogg");
}
}
public static void 音效() {
new Thread(new Runnable() {
@Override
public void run() {
音效播放(); // 调用音效方法
}
}).start();
}
public static void 远控音效() {
AlguiToolAudio.playAudio(aContext, "cont.ogg");
}
public static String km;
// 内存修改示例
public static boolean initialized;
public static DynamicArrayList arrayList;
public static Notification notification;
public static FloatButton floatButton;
// 网络验证
private static boolean is2FA = true;
private static Context aContext; // 确保 aContext 被正确声明
// 声明一个静态变量来保存当前活动
public static Activity currentActivity;
private static void Net2FA(final Activity currentActivity) {
AlguiWin2FA.Get(currentActivity, currentActivity)
.setCatWYAppID("57182")
.setCatWYAppCode("1.0")
.setCatWYOkCode(42589214)
.setCatWYAppKey("LL9EeZ8LResQ899i")
.setCatWYRC4_2("11L79sm1O5y57182")
.addRemoteFieldName("otone")
.addRemoteFieldName("ottwo")
.startWY(new AlguiCallback.WY2FA() {
public void success(String kami, String user, String vip, HashMap<String, String> remote) {
}
public void success(String kami, String expireTime, HashMap<String, String> field) {
MyMenu(kami, expireTime, field, currentActivity);
}
});
}
private static void MyMenu(final String kami, final String expireTime, HashMap<String, String> field,
final Activity currentActivity) {
AlguiToolNative.loadLibrary("Algui");
RootService.bind(new Intent(currentActivity, AlguiRootClient.class), new AlguiRootService());
String km = kami;
String time = expireTime;
String value1 = field.getOrDefault("otone", "这是远程变量获取失败时的默认值");
String value2 = field.getOrDefault("ottwo", "这是远程变量获取失败时的默认值");
final String markcode = android.os.Build.FINGERPRINT;
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... voids) {
String codeList = AlguiToolNetwork.get(AlguiDocument.getRead("codeList"));
long count = 0;
if (codeList != null) {
for (int i = 0; i < codeList.length(); i++) {
if (codeList.charAt(i) == ';') {
count++;
}
}
}
if (codeList != null && !codeList.contains(markcode)) {
AlguiToolNetwork.get(AlguiDocument.getAdd("codeList", markcode + ";"));
count++;
return "欢迎新用户!你是第" + count + "个用户";
}
return "全网人数:" + count;
}
@Override
protected void onPostExecute(String result) {
AlguiToolAudio.playAudio(aContext, "oopen.ogg");
alreadyloggin = true;
// 远控
RemoteLinkWatcher.startWatching(
"https://sharechain.qq.com/a3d3ef114852299548ab41773813c9bc",
"https://sharechain.qq.com/788e56aa9ad0ebb26f149c12c535e916",
MIX.getContext());
final AlguiV a = AlguiV.Get(aContext);// 获取UI快速构建器
// 绘制静态视图到屏幕上
a.WinDraw(
a.TextTag(null, "" + Build.BRAND + "\nAndroid" + Build.VERSION.RELEASE + "\nTrosCore v1.0.0",
0xCE000000, expireTime)
.setCatTextSize(8)
.setCatTextColor(0xFFFFFFFF), // 绘制的视图
Gravity.BOTTOM | Gravity.START, // 坐标原点 (这里右上原点)
10, 10, // 相对原点xy偏移
false// 视图是否可接收触摸事件
);
final AlguiV.TVNoSignalText tvNoSignal = new AlguiV.TVNoSignalText();
tvNoSignal.start("TrosCore\nAccount:" + kami); // 开
// 初始化 MIX
MIX.init(currentActivity);
String userName = TextUtils.isEmpty(AlguiWin2FA.wy_user)
? "TrosCore用户"
: AlguiWin2FA.wy_user;
ModuleManager.getInstance().setModuleEnabled(
"TrosCore",
true,
"Version:1.0.0 User:" + userName);
}
}.execute();
}
private Main() {
throw new UnsupportedOperationException("cannot be instantiated");
}
public static final String TAG = "Main";
public static void start(Context c) {
aContext = c;
final Activity activity = (Activity) c;
currentActivity = activity;
activity.getWindow().getDecorView().postDelayed(new Runnable() {
@Override
public void run() {
if (is2FA) {
Net2FA(activity);
} else {
MyMenu("Free", "无限期", new HashMap<String, String>(), activity);
}
}
}, 350L);
}
}