From b6850b03f2a95e31bd92db80a2d85437a9b7236f Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Thu, 18 Jul 2024 11:49:43 +0800 Subject: [PATCH] =?utf8?q?=E5=88=A0=E9=99=A4=E5=96=9D=E6=B0=B4=E6=8F=90?= =?utf8?q?=E9=86=92=E5=BC=B9=E7=AA=97=E7=9A=84=E5=A4=9A=E4=BD=99=E4=BB=A3?= =?utf8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../notify/drinkReminder_notification.h | 14 +- .../src/notify/drinkReminder_notification.cpp | 209 +----------------- 2 files changed, 6 insertions(+), 217 deletions(-) diff --git a/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h b/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h index 0b9f33505..f9c7bd019 100644 --- a/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h +++ b/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-12 11:44:04 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-07-16 17:08:00 + * @LastEditTime: 2024-07-18 11:46:35 * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h */ #ifndef DRINKREMINDER_NOTIFICATION @@ -22,15 +22,6 @@ namespace OHOS bool OnDrag(UIView &view, const DragEvent &event) override; bool OnDragEnd(UIView &view, const DragEvent &event) override; - void SetDrinkReminderTopic(uint16_t topic); - uint16_t GetDrinkReminderTopic(void); - bool IsDrinkReminderTimerOpen(void); - int DrinkReminderOpenState(void); - uint32_t GetDrinkReminderIntervalTime(void); - bool IsDrinkReminderTime(void); - void DrinkReminder_StartTimer(); - void DrinkReminder_StopTimer(void); - void set_screen_on_and_vibration(void); private: @@ -39,9 +30,6 @@ namespace OHOS DrinkReminderViewEventListener(const DrinkReminderViewEventListener &) = delete; const DrinkReminderViewEventListener &operator=(const DrinkReminderViewEventListener &) = delete; bool X_DRAG_FLAG{false}; - int frequency{0}; - uint16_t drinkReminderTopic; - bool timerOpen{false}; // 定时器是否开启 }; } diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/drinkReminder_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/drinkReminder_notification.cpp index a951494fa..34bbb1934 100644 --- a/code/sdk/application/wearable/service/msg_center/src/notify/drinkReminder_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/drinkReminder_notification.cpp @@ -30,21 +30,14 @@ namespace OHOS static constexpr const char *DRINKREMINDERGROUPVIEWID = "DrinkReminderGroupview"; static constexpr const char *DRINKREMINDERBUTTONVIEWID = "DrinkReminderButton"; - // 声明定时器变量 - static osTimerId_t g_timer = NULL; - static constexpr const uint32_t HALF_HOUR = 30 * 60 * 1000; // 半小时 - static constexpr const uint32_t ONE_HOUR = 1 * 60 * 60 * 1000; // 1小时 - static constexpr const uint32_t TWO_HOUR = 2 * 60 * 60 * 1000; // 2小时 - static constexpr const uint32_t THREE_HOUR = 3 * 60 * 60 * 1000; // 3小时 - DrinkReminderViewEventListener::DrinkReminderViewEventListener() { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::DrinkReminderViewEventListener"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::DrinkReminderViewEventListener"); } DrinkReminderViewEventListener::~DrinkReminderViewEventListener() { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::~DrinkReminderViewEventListener"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::~DrinkReminderViewEventListener"); } DrinkReminderViewEventListener &DrinkReminderViewEventListener::GetInstance() @@ -55,7 +48,7 @@ namespace OHOS bool DrinkReminderViewEventListener::OnRelease(UIView &view, const ReleaseEvent &event) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::OnRelease"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::OnRelease"); UNUSED(event); std::string viewId = view.GetViewId(); if (viewId == DRINKREMINDERBUTTONVIEWID) @@ -99,193 +92,6 @@ namespace OHOS uapi_vibrationModeSet(ConfigModel::GetInstance()->GetVibrationReminder()); } - void DrinkReminderViewEventListener::SetDrinkReminderTopic(uint16_t topic) - { - drinkReminderTopic = topic; - } - - uint16_t DrinkReminderViewEventListener::GetDrinkReminderTopic(void) - { - return drinkReminderTopic; - } - - /*获取定时器是否开启*/ - bool DrinkReminderViewEventListener::IsDrinkReminderTimerOpen(void) - { - return timerOpen; - } - - /*久坐提醒是否开启,(0:关闭,1:开启 [每天一次]) 2为间隔提醒*/ - int DrinkReminderViewEventListener::DrinkReminderOpenState(void) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::DrinkReminderOpenState"); - int state = ConfigModel::GetInstance()->GetDrinkSwitch(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "state = %d", state); - return state; - } - - /*获取喝水提醒的间隔时间*/ - uint32_t DrinkReminderViewEventListener::GetDrinkReminderIntervalTime(void) - { - // 添加日志输出,用于调试 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::GetDrinkReminderIntervalTime"); - - // 获取频率前先进行错误处理 - ConfigModel *config = ConfigModel::GetInstance(); - if (!config) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConfigModel::GetInstance() returned nullptr"); - return HALF_HOUR; // 返回一个默认值 - } - - // 获取喝水提醒的频率 - frequency = config->GetDrinkFreq(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "frequency = %d", frequency); - - // 根据频率设置间隔时间 - switch (frequency) - { - case 0: - return HALF_HOUR; - case 1: - return ONE_HOUR; - case 2: - return TWO_HOUR; - case 3: - return THREE_HOUR; - default: - return HALF_HOUR; // 默认情况下返回半小时间隔 - } - } - - /*是否是喝水提醒时间段内,间隔提醒开启后启用*/ - bool DrinkReminderViewEventListener::IsDrinkReminderTime() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::IsDrinkReminderTime"); - // 获取当前时间 - time_t now = time(0); - tm *ltm = localtime(&now); - int currentHour = ltm->tm_hour; - int currentMinute = ltm->tm_min; - - // 获取提醒时间段 - int drinkReminderStartTime = ConfigModel::GetInstance()->GetDrinkStart(); // 获取喝水提醒开始时间,int类型 前16位小时,后16位分钟 - int drinkReminderEndTime = ConfigModel::GetInstance()->GetDrinkEnd(); // 获取喝水提醒结束时间, int类型 前16位小时,后16位分钟 - - // 解析开始时间 - int startHour = (drinkReminderStartTime & 0XFFFF0000) >> 16; // 前16位是小时 - int startMinute = drinkReminderStartTime & 0X0000FFFF; // 后16位是分钟 - - // 解析结束时间 - int endHour = (drinkReminderEndTime & 0XFFFF0000) >> 16; // 前16位是小时 - int endMinute = drinkReminderEndTime & 0x0000FFFF; // 后16位是分钟 - - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentHour = %d,currentMinute = %d", currentHour, currentMinute); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drinkReminderStartTime = %d,drinkReminderEndTime = %d", drinkReminderStartTime, drinkReminderEndTime); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startHour = %d,startMinute = %d", startHour, startMinute); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "endHour = %d,endMinute = %d", endHour, endMinute); - - // 判断当前时间是否在提醒时间段内 - if (currentHour > startHour || (currentHour == startHour && currentMinute >= startMinute)) - { - if (currentHour < endHour || (currentHour == endHour && currentMinute < endMinute)) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "It's time to remind the user to drink!"); - return true; - } - } - - return false; - } - - /* -------------------------------------------------------------------------- */ - - /*显示喝水提醒视图*/ - static OHOS::UIViewGroup *showDrinkReminderNotify(void) - { - return OHOS::CreateDrinkReminderView(); - } - - /*定时器到期时的处理*/ - static void DrinkReminder_TimerCallbackProc(int data) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminder_TimerCallbackProc"); - if (DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTime()) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!"); - DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration(); - NotificationManager::GetInstance()->ShowNotify(showDrinkReminderNotify, DrinkReminderViewEventListener::GetInstance().GetDrinkReminderTopic(), true); - } - else - { - DrinkReminderViewEventListener::GetInstance().DrinkReminder_StopTimer(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminder Out of time");/*如果超出范围内设置的时间就停止定时器*/ - } - } - - /*回调函数*/ - static void DrinkReminder_TimerCallback(int data) - { - GraphicService::GetInstance()->PostGraphicEvent(std::bind(DrinkReminder_TimerCallbackProc, data)); - } - - /*开启定时器*/ - void DrinkReminderViewEventListener::DrinkReminder_StartTimer(void) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::DrinkReminder_StartTimer"); - /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */ - if (g_timer != NULL) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!"); - return; - } - - /* --------------------------------- 2.创建定时器 -------------------------------- */ - g_timer = osTimerNew((osTimerFunc_t)DrinkReminder_TimerCallback, osTimerPeriodic, NULL, NULL); - // 检查定时器创建是否成功 - if (g_timer == NULL) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!"); - return; - } - - /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */ - int tick = osMs2Tick(GetDrinkReminderIntervalTime()); - - /* --------------------------------- 4.启动定时器 -------------------------------- */ - osStatus_t ret = osTimerStart(g_timer, tick); - /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 NULL -------------------- */ - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret); - if (g_timer != NULL) - { - ret = osTimerDelete(g_timer); - } - g_timer = NULL; - return; - } - timerOpen = true; - } - - /*停止定时器*/ - void DrinkReminderViewEventListener::DrinkReminder_StopTimer(void) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminderViewEventListener::DrinkReminder_StopTimer"); - // 检查定时器是否存在 - if (g_timer != NULL) - { - // 删除定时器并置为 NULL - osStatus_t ret = osTimerDelete(g_timer); - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret); - } - g_timer = NULL; - timerOpen = false; - } - } - /*创建喝水提醒视图*/ UIViewGroup *CreateDrinkReminderView(void) { @@ -405,14 +211,9 @@ namespace OHOS /*释放喝水提醒视图*/ void FreeDrinkReminderView(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FreeDrinkReminderView(void)"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FreeDrinkReminderView(void)"); if (DrinkReminderGroupView != nullptr) { - if (DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTimerOpen()) - { - DrinkReminderViewEventListener::GetInstance().DrinkReminder_StopTimer(); - } - DrinkReminderGroupView->RemoveAll(); delete DrinkReminderTitleLabel; @@ -433,7 +234,7 @@ namespace OHOS RootView::GetInstance()->Remove(DrinkReminderGroupView); delete DrinkReminderGroupView; DrinkReminderGroupView = nullptr; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Free DrinkReminderView succeed!!"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Free DrinkReminderView succeed!!"); } return; } -- 2.17.1