优化喝水提醒的时间段判断
authorluozheng <1732036298@qq.com>
Fri, 19 Jul 2024 08:08:46 +0000 (16:08 +0800)
committerluozheng <1732036298@qq.com>
Fri, 19 Jul 2024 08:08:46 +0000 (16:08 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp

index c21d3ad..e5c6100 100644 (file)
@@ -72,11 +72,6 @@ extern "C"
 #define SEDENTARY_TIME_RANGE (((curTime.tm_hour > sedentary_start_hour) || (curTime.tm_hour == sedentary_start_hour && curTime.tm_min >= sedentary_start_min)) && \\r
                               ((curTime.tm_hour < sedentary_stop_hour) || (curTime.tm_hour == sedentary_stop_hour && curTime.tm_min < sedentary_stop_min)))\r
 \r
-#define DRINKREMIND_TIME_RANGE ((((curTime.tm_hour > drinkreminder_start_hour && curTime.tm_hour < 24) || (curTime.tm_hour == drinkreminder_start_hour && curTime.tm_min >= drinkreminder_start_min)) && \\r
-                                 ((curTime.tm_hour < drinkreminder_end_hour && curTime.tm_hour >= 0) || (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min))) ||       \\r
-                                ((curTime.tm_hour >= 0 && curTime.tm_hour < drinkreminder_end_hour) || (curTime.tm_hour == drinkreminder_end_hour && curTime.tm_min < drinkreminder_end_min)) &&         \\r
-                                    ((curTime.tm_hour > drinkreminder_start_hour - 24 || (curTime.tm_hour == drinkreminder_start_hour - 24 && curTime.tm_min >= drinkreminder_start_min))))\r
-\r
 #define WAKE_TIME_RANGE (((wake_time_hour < sleep_time_hour) &&                                              \\r
                           ((curTime.tm_hour > wake_time_hour) ||                                             \\r
                            (curTime.tm_hour == wake_time_hour && curTime.tm_min >= wake_time_min)) &&        \\r
@@ -140,6 +135,31 @@ extern "C"
         }\r
     }\r
 \r
+    static bool is_drinkremind_time_range(struct tm &curTime)\r
+    {\r
+        int drinkreminder_start_time_min = drinkreminder_start_hour * 60 + drinkreminder_start_min; /* 开始时间的分钟数 */\r
+        int drinkreminder_end_time_min = drinkreminder_end_hour * 60 + drinkreminder_end_min;       /* 结束时间的分钟数 */\r
+        int cur_time_min = curTime.tm_hour * 60 + curTime.tm_min;                                   /* 当前时间的分钟数 */\r
+\r
+        // 处理非跨天的情况\r
+        if (drinkreminder_end_time_min > drinkreminder_start_time_min)\r
+        {\r
+            if (cur_time_min >= drinkreminder_start_time_min && cur_time_min <= drinkreminder_end_time_min)\r
+            {\r
+                return true;\r
+            }\r
+        }\r
+        else // 处理跨天的情况\r
+        {\r
+            if (cur_time_min >= drinkreminder_start_time_min || cur_time_min <= drinkreminder_end_time_min)\r
+            {\r
+                return true;\r
+            }\r
+        }\r
+\r
+        return false;\r
+    }\r
+\r
     void clean_sleep_flag(void)\r
     {\r
         uapi_dev_runtime_set_sleep_status(0);\r
@@ -428,7 +448,7 @@ extern "C"
             else if (drinkreminder_switch == 2)\r
             {\r
                 // 判断当前时间是否在提醒时间段内\r
-                if (DRINKREMIND_TIME_RANGE)\r
+                if (is_drinkremind_time_range(curTime))\r
                 {\r
                     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " curTime.tm_sec = %d", curTime.tm_sec);\r
                     double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq;             // 频率设置\r
@@ -462,7 +482,7 @@ extern "C"
                         }\r
                     }\r
                 }\r
-                else if (!DRINKREMIND_TIME_RANGE && uapi_dev_runtime_get_drinkremind_status() == 1)\r
+                else if (!is_drinkremind_time_range(curTime) && uapi_dev_runtime_get_drinkremind_status() == 1)\r
                 {\r
                     uapi_dev_runtime_set_drinkremind_status(0);\r
                 }\r