Files
EchoLink/app/src/main/java/com/nbee/echolink/MainActivity.java
2023-12-08 20:55:24 +08:00

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