106 lines
3.5 KiB
Java
106 lines
3.5 KiB
Java
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 "读取日志文件时出错";
|
|
}
|
|
}
|
|
} |