}
};
- private void doBoardTempCheck(boolean fitter) {
+ private double doBoardTempCheck(boolean fitter) {
ICLogger.d("fitter==> " + fitter + " mBoardTopLimit=> " + mBoardTopLimit);
double boardTemperature = TemperatureUtil.getBoardTemperature();
ICLogger.d("boardTemperature ===> " + boardTemperature);
e.printStackTrace();
}
}
+ return boardTemperature;
}
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);
}