From 935ded253bd85112a97734dded978843d4ec876f Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Sat, 9 Dec 2023 17:06:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20MonitorService.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nbee/echolink/service/MonitorService.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nbee/echolink/service/MonitorService.java b/app/src/main/java/com/nbee/echolink/service/MonitorService.java index 8ff770a..9c642eb 100644 --- a/app/src/main/java/com/nbee/echolink/service/MonitorService.java +++ b/app/src/main/java/com/nbee/echolink/service/MonitorService.java @@ -1,9 +1,12 @@ package com.nbee.echolink.service; +import android.app.AlarmManager; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; +import android.app.PendingIntent; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.IBinder; @@ -12,14 +15,25 @@ import android.util.Log; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; import com.nbee.echolink.R; +import com.nbee.echolink.broadcast.HeartbeatAlarmReceiver; import com.nbee.echolink.model.CallInfo; +import com.nbee.echolink.model.DeviceInfo; import com.nbee.echolink.model.SMSInfo; +import com.nbee.echolink.response.ApiResponse; +import com.nbee.echolink.utils.DeviceInfoUtils; import com.nbee.echolink.utils.NetworkUtil; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; import timber.log.Timber; public class MonitorService extends Service { @@ -27,18 +41,17 @@ public class MonitorService extends Service { private static final String TAG = "MonitorService"; private String lastPhoneNumber = null; private long lastCallTime = 0; - private int count; + private static final long HEARTBEAT_INTERVAL_MINUTES = 10; // 10分钟 @Override public void onCreate() { super.onCreate(); - Timber.d("MonitorService onCreate"); + Timber.d("监控服务 onCreate"); startForegroundService(); networkUtil = new NetworkUtil(this); + scheduleHeartbeat(); // 启动心跳定时任务 } - @Override public int onStartCommand(Intent intent, int flags, int startId) { - Timber.d("MonitorService onStartCommand"); if (intent != null) { if (intent.hasExtra("incomingNumber")) { String incomingNumber = intent.getStringExtra("incomingNumber"); @@ -126,4 +139,20 @@ public class MonitorService extends Service { Timber.d("MonitorService onBind"); return null; // 不提供绑定服务的接口 } + + private void scheduleHeartbeat() { + AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); + Intent intent = new Intent(this, HeartbeatAlarmReceiver.class); // HeartbeatAlarmReceiver是一个BroadcastReceiver + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); + + long intervalMillis = HEARTBEAT_INTERVAL_MINUTES * 60 * 1000; // 10分钟的毫秒数 + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + intervalMillis, pendingIntent); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + intervalMillis, pendingIntent); + } else { + alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + intervalMillis, pendingIntent); + } + } }