喝水提醒优化修改:不在提醒时间段内且计数器大于0就重置计数器
authorluozheng <1732036298@qq.com>
Thu, 18 Jul 2024 03:33:44 +0000 (11:33 +0800)
committerluozheng <1732036298@qq.com>
Thu, 18 Jul 2024 03:33:44 +0000 (11:33 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp

index 4180251..cbc1c6f 100644 (file)
@@ -423,29 +423,39 @@ extern "C"
             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