else if (drinkreminder_switch == 2)\r
{\r
// 判断当前时间是否在提醒时间段内\r
- if ((curTime.tm_hour > drinkreminder_start_hour ||\r
- (curTime.tm_hour == drinkreminder_start_hour && curTime.tm_min >= drinkreminder_start_min)) &&\r
- (curTime.tm_hour < drinkreminder_end_hour ||\r
- (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min)))\r
- {\r
- double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq; // 频率设置\r
+ bool isInReminderPeriod = (curTime.tm_hour > drinkreminder_start_hour ||\r
+ (curTime.tm_hour == drinkreminder_start_hour && curTime.tm_min >= drinkreminder_start_min)) &&\r
+ (curTime.tm_hour < drinkreminder_end_hour ||\r
+ (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min));\r
\r
- int currentMinutes = curTime.tm_hour * 60 + curTime.tm_min; // 当前时间分钟数\r
- int start_time_Minutes = drinkreminder_start_hour * 60 + drinkreminder_start_min; // 开始时间分钟数\r
+ if (isInReminderPeriod)\r
+ {\r
+ double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq; // 频率设置\r
+ int currentMinutes = curTime.tm_hour * 60 + curTime.tm_min; // 当前时间的分钟数\r
+ int start_time_Minutes = drinkreminder_start_hour * 60 + drinkreminder_start_min; // 开始时间的分钟数\r
int drinkremind_max_cnt = (drinkreminder_end_hour * 60 + drinkreminder_end_min - start_time_Minutes) / (interval_time * 60);\r
\r
// 检查提醒次数\r
if (drinkremind_cnt < drinkremind_max_cnt)\r
{\r
- if (currentMinutes == (start_time_Minutes + interval_time * 60 * drinkremind_cnt) && curTime.tm_sec == 0)\r
+ int expectedTime = start_time_Minutes + static_cast<int>(interval_time * 60 * drinkremind_cnt) + static_cast<int>(interval_time * 60);\r
+ if (currentMinutes == expectedTime && curTime.tm_sec == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");\r
drinkremind_cnt++; // 增加提醒计数\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drinkremind_max_cnt = %d , drinkremind_cnt = %d", drinkremind_max_cnt, drinkremind_cnt);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "curTime:%d:%d", curTime.tm_hour, curTime.tm_min);\r
AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
}\r
}\r
}\r
+ else\r
+ {\r
+ if (drinkremind_cnt > 0) // 只有在计数器大于0时才重置\r
+ {\r
+ drinkremind_cnt = 0; // 重置计数器\r
+ }\r
+ }\r
}\r
}\r
// 心率周期检测 [0 1 5 10]\r