From: TrillGates Date: Fri, 24 Sep 2021 09:12:29 +0000 (+0800) Subject: completed board tempearture listener. X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=77b21835b7e8b419b907ee9fcbf5026b06a9917b;p=icworkservice.git completed board tempearture listener. --- diff --git a/app/src/main/java/com/ic/work/SensorDataService.java b/app/src/main/java/com/ic/work/SensorDataService.java index bd0b73e..020156b 100644 --- a/app/src/main/java/com/ic/work/SensorDataService.java +++ b/app/src/main/java/com/ic/work/SensorDataService.java @@ -443,7 +443,7 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp } }; - private void doBoardTempCheck(boolean fitter) { + private double doBoardTempCheck(boolean fitter) { ICLogger.d("fitter==> " + fitter + " mBoardTopLimit=> " + mBoardTopLimit); double boardTemperature = TemperatureUtil.getBoardTemperature(); ICLogger.d("boardTemperature ===> " + boardTemperature); @@ -461,6 +461,7 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp e.printStackTrace(); } } + return boardTemperature; } @@ -711,12 +712,25 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp ICLogger.d("receiver board temperature check alarm..."); //如果是检测主板温度的 //获取主板温度,设置下一次检测周期 - long intervalMillis = intent.getLongExtra("intervalMillis", 0); - ICLogger.d("intervalMillis==> " + intervalMillis); + long nextDistance = mBoardCheckCycle * 1000; + intent.putExtra("intervalMillis", nextDistance); + double currentBoardTemp = this.doBoardTempCheck(true); + //如果nextDistance为0,那么则会动态计算 + //目标时间根据当前温度与阀值温度的差值来定,差值越小,检测越频繁,最小为3秒钟一次 + if (currentBoardTemp >= mBoardTopLimit) { + nextDistance = 3 * 1000; + } else { + double dt = mBoardTopLimit - currentBoardTemp; + long targetTime = (long) (dt * dt); + if (targetTime < 3) { + targetTime = 3; + } + nextDistance = targetTime * 1000; + } + ICLogger.d("intervalMillis==> " + nextDistance); AlarmManagerUtil.setAlarmTime(this, - System.currentTimeMillis() + intervalMillis, + System.currentTimeMillis() + nextDistance, intent); - this.doBoardTempCheck(true); } return super.onStartCommand(intent, flags, startId); }