package com.nbee.echolink; import static java.lang.Thread.*; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.PowerManager; import android.view.View; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.work.ExistingPeriodicWorkPolicy; import androidx.work.PeriodicWorkRequest; import androidx.work.WorkManager; import com.nbee.echolink.service.MonitorService; import com.nbee.echolink.utils.BatteryOptimizationUtil; import com.nbee.echolink.utils.HeartbeatWorker; import com.nbee.echolink.utils.PermissionUtils; import com.nbee.echolink.utils.ShellUtils; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.concurrent.TimeUnit; import timber.log.Timber; public class MainActivity extends AppCompatActivity { private final String TAG = "MainActivity"; private PermissionUtils permissionUtils; private TextView logTextView; // 将类型从 View 更改为 TextView private ShellUtils shellUtils; private boolean isRoot; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); isRoot = shellUtils.checkRootPermission(); if (!isRoot){ Timber.d("未获取root权限: "+ isRoot); } logTextView = findViewById(R.id.logTextView); updateLog("初始化日志..."); requestIgnoreBattery(); permissionUtils = new PermissionUtils(this); permissionUtils.checkPermissions(); // 启动MonitorService服务 Intent serviceIntent = new Intent(this, MonitorService.class); startService(serviceIntent); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionUtils.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override protected void onResume() { super.onResume(); String logContent = readLogFile(); updateLog(logContent); } private void requestIgnoreBattery(){ Context context = getApplicationContext(); PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(context.getPackageName()); if(!hasIgnored){ BatteryOptimizationUtil.requestIgnoreBatteryOptimization(context); Timber.d("不在在优化电池白名单内"); } else { return; } } private void updateLog(String newLog) { logTextView.setText(newLog); } private String readLogFile() { try { File logFile = new File(getFilesDir(), "logs/echoLink.log"); // 日志文件的路径 if (!logFile.exists()) { return "日志文件不存在"; } StringBuilder logContent = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) { String line; while ((line = reader.readLine()) != null) { logContent.append(line).append("\n"); } } return logContent.toString(); } catch (IOException e) { e.printStackTrace(); return "读取日志文件时出错"; } } }