completed board tempearture listener.
authorTrillGates <williamtrillgates@gmail.com>
Fri, 24 Sep 2021 09:12:29 +0000 (17:12 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Fri, 24 Sep 2021 09:12:29 +0000 (17:12 +0800)
app/src/main/java/com/ic/work/SensorDataService.java

index bd0b73e..020156b 100644 (file)
@@ -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);
     }