/*\r
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-07 11:18:25\r
- * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-04 20:35:41\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-07-17 09:56:10\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h\r
* @Description: \r
* \r
void get_sleep_time_notify(void);\r
void clean_sleep_flag(void);\r
void clean_sedentary_flag(void);\r
+void set_drinkreminder_data(void);\r
#ifdef __cplusplus\r
}\r
#endif\r
static int sedentary_start_min = 0;\r
static int sedentary_stop_hour = 0;\r
static int sedentary_stop_min = 0;\r
-\r
+ static int drinkreminder_switch = 0; /*喝水提醒开关:0 关闭 1开始 2间隔提醒*/\r
+ static int drinkreminder_start_time = 0; /*喝水提醒开始时间*/\r
+ static int drinkreminder_start_hour = 0; /*喝水提醒开始小时*/\r
+ static int drinkreminder_start_min = 0; /*喝水提醒开始分钟*/\r
+ static int drinkreminder_end_time = 0; /*喝水提醒结束时间*/\r
+ static int drinkreminder_end_hour = 0; /*喝水提醒结束小时*/\r
+ static int drinkreminder_end_min = 0; /*喝水提醒结束分钟*/\r
+ static int drinkreminder_freq = 0; /*喝水提醒频率*/\r
+ static int drinkreminder_goal = 0; /*喝水提醒目标ml*/\r
+ static int drinkremind_cnt = 0; // 喝水提醒计数器\r
static int sleep_notify_time_min = 0;\r
static int sleep_notify_time_hour = 0;\r
\r
{\r
sleep_time = get_sleep_time_from_config_model();\r
wake_up_time = get_wake_up_time_from_config_model();\r
+ // 解析开始时间\r
sleep_time_hour = (sleep_time & 0xFFFF0000) >> 16;\r
sleep_time_min = sleep_time & 0x0000FFFF;\r
wake_time_hour = (wake_up_time & 0xFFFF0000) >> 16;\r
wake_time_min = wake_up_time & 0x0000FFFF;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_time_hour:%d sleep_time_min:%d wake_time_hour:%d wake_time_min:%d", sleep_time_hour, sleep_time_min, wake_time_hour,wake_time_min);\r
+ // 解析结束时间\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_time_hour:%d sleep_time_min:%d wake_time_hour:%d wake_time_min:%d", sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min);\r
}\r
\r
void set_sedentary_data(void)\r
sedentary_stop_min = sedentary_time & 0X000000FF;\r
}\r
\r
+ void set_drinkreminder_data(void)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "set_drinkreminder_data");\r
+ drinkreminder_switch = OHOS::ConfigModel::GetInstance()->GetDrinkSwitch();\r
+ drinkreminder_freq = OHOS::ConfigModel::GetInstance()->GetDrinkFreq();\r
+ drinkreminder_goal = OHOS::ConfigModel::GetInstance()->GetDrinkGoal();\r
+\r
+ // 获取提醒时间段\r
+ drinkreminder_start_time = OHOS::ConfigModel::GetInstance()->GetDrinkStart(); // 获取喝水提醒开始时间,int类型 前16位小时,后16位分钟\r
+ drinkreminder_end_time = OHOS::ConfigModel::GetInstance()->GetDrinkEnd(); // 获取喝水提醒结束时间, int类型 前16位小时,后16位分钟\r
+\r
+ // 解析开始时间\r
+ drinkreminder_start_hour = (drinkreminder_start_time & 0XFFFF0000) >> 16; // 前16位是小时\r
+ drinkreminder_start_min = drinkreminder_start_time & 0X0000FFFF; // 后16位是分钟\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d:%d", drinkreminder_start_hour, drinkreminder_start_min);\r
+\r
+ // 解析结束时间\r
+ drinkreminder_end_hour = (drinkreminder_end_time & 0XFFFF0000) >> 16; // 前16位是小时\r
+ drinkreminder_end_min = drinkreminder_end_time & 0x0000FFFF; // 后16位是分钟\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d:%d", drinkreminder_end_hour, drinkreminder_end_min);\r
+\r
+ if (drinkreminder_switch == 2)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d:%d~%d:%d", drinkreminder_start_hour, drinkreminder_start_min, drinkreminder_end_hour, drinkreminder_end_min);\r
+ }\r
+ }\r
+\r
void clean_sleep_flag(void)\r
{\r
uapi_dev_runtime_set_sleep_status(0);\r
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_SEDENTARY, NULL);\r
}\r
}\r
+ // 喝水提醒\r
+ if (drinkreminder_switch)\r
+ {\r
+ // 定时提醒\r
+ if (drinkreminder_switch == 1) // 每天在指定的时间提醒用户喝水\r
+ {\r
+ if (curTime.tm_hour == drinkreminder_start_hour &&\r
+ curTime.tm_min == drinkreminder_start_min &&\r
+ curTime.tm_sec == 0)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");\r
+ AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
+ }\r
+ }\r
+ // 间隔提醒\r
+ 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
+\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
+ {\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
+ AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
// 心率周期检测 [0 1 5 10]\r
if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED))\r
{\r
}\r
set_sleep_and_wake_time();\r
set_sedentary_data();\r
+ set_drinkreminder_data();\r
get_sleep_time_notify();\r
return ERRCODE_SUCC;\r
}\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-02-19 10:39:11\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-22 18:24:34\r
+ * @LastEditTime: 2024-07-16 17:04:06\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp\r
*/\r
\r
else if ((view_->GetVibrationModeView() != nullptr) && (&view == view_->GetVibrationModeView()->GetVibrationModeLabelButton()))\r
{\r
int VibrationMode = view_->GetVibrationModeView()->GetVibrationModePicker()->GetSelected();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VibrationMode = %d", VibrationMode);\r
- // VibationModeSet(VibrationMode);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VibrationMode = %d", VibrationMode);\r
SoundAndVibrationModel::GetInstance()->SetVibrationReminderToggleButtonStaus(VibrationMode);\r
+ uapi_vibrationModeSet(VibrationMode);\r
view_->ChangeView(VIBRATIONMODEVIEW, SOUNDANDVIBRATIONVIEW);\r
}\r
return true;\r
std::string WatchQRCodePresenter::WatchQRCodeGetQRCodeStr()
{
- std::string QRCodeStr = "https://www.kumi.top/p-i-kumi.html?c=5&p=5";
+ /*实例:https://www.kumi.top/p-i-kumi.html?c=5&p=5&m=7a:8c:2d:61:9a:fc*/
+ /*m=后边的值为手表 mac 地址,前面部分为固定格式*/
+ std::string QRCodeStr = "https://www.kumi.top/p-i-kumi.html?c=5&p=5&m=";
std::string MacAddress = GetCurrentWatchMacAddress(); // 假设这是获取当前手表 Mac 地址的函数
- QRCodeStr += "&m=" + MacAddress;
+ QRCodeStr += MacAddress;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QRCodeStr:%s", QRCodeStr.c_str());
return QRCodeStr;
}
p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_FREQ,data.freq);
}
}
- CustomEventPublish(TOPIC_EVENT_DRINKREMINDER,NULL,0);
+ set_drinkreminder_data();/*更新喝水提醒时间*/
return;
}
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-12 11:44:04
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-04 15:16:56
+ * @LastEditTime: 2024-07-16 17:08:00
* @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/drinkReminder_notification.h
*/
#ifndef DRINKREMINDER_NOTIFICATION
void DrinkReminder_StartTimer();
void DrinkReminder_StopTimer(void);
+ void set_screen_on_and_vibration(void);
+
private:
DrinkReminderViewEventListener();
~DrinkReminderViewEventListener();
unused(topic);
unused(req);
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyDrinkReminderProc !");
- int state = DrinkReminderViewEventListener::GetInstance().DrinkReminderOpenState();
- switch (state)
- {
- case 0:
- if (DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTimerOpen())
- {
- DrinkReminderViewEventListener::GetInstance().DrinkReminder_StopTimer();
- }
-
- break;
- case 1:
- if (DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTimerOpen())
- {
- DrinkReminderViewEventListener::GetInstance().DrinkReminder_StopTimer();
- }
- // uapi_set_screen_on_api();
- // NotificationManager::GetInstance()->ShowNotify(showDrinkReminderNotify, (uint16_t)topic, true);
-
- break;
- case 2:
- if (!DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTimerOpen())
- {
- DrinkReminderViewEventListener::GetInstance().DrinkReminder_StartTimer();
- }
- break;
- default:
- break;
- }
+ DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration();
+ NotificationManager::GetInstance()->ShowNotify(showDrinkReminderNotify, (uint16_t)topic, true);
}
//每日训练
void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
return true;
}
+ void DrinkReminderViewEventListener::set_screen_on_and_vibration(void)
+ {
+ /*亮屏加震动*/
+ uapi_set_screen_on_api();
+ uapi_vibrationModeSet(ConfigModel::GetInstance()->GetVibrationReminder());
+ }
+
void DrinkReminderViewEventListener::SetDrinkReminderTopic(uint16_t topic)
{
drinkReminderTopic = topic;
int drinkReminderEndTime = ConfigModel::GetInstance()->GetDrinkEnd(); // 获取喝水提醒结束时间, int类型 前16位小时,后16位分钟
// 解析开始时间
- int startHour = (drinkReminderStartTime >> 8) & 0xFF; // 前8位是小时
- int startMinute = drinkReminderStartTime & 0xFF; // 后8位是分钟
+ int startHour = (drinkReminderStartTime & 0XFFFF0000) >> 16; // 前16位是小时
+ int startMinute = drinkReminderStartTime & 0X0000FFFF; // 后16位是分钟
// 解析结束时间
- int endHour = (drinkReminderEndTime >> 8) & 0xFF; // 中前8位是小时
- int endMinute = drinkReminderEndTime & 0xFF; // 后8位是分钟
+ 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, "DrinkReminder_TimerCallbackProc");
if (DrinkReminderViewEventListener::GetInstance().IsDrinkReminderTime())
{
- uapi_set_screen_on_api();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");
+ DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration();
NotificationManager::GetInstance()->ShowNotify(showDrinkReminderNotify, DrinkReminderViewEventListener::GetInstance().GetDrinkReminderTopic(), true);
}
else
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminder Out of time");
+ DrinkReminderViewEventListener::GetInstance().DrinkReminder_StopTimer();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DrinkReminder Out of time");/*如果超出范围内设置的时间就停止定时器*/
}
}
/*创建喝水提醒视图*/
UIViewGroup *CreateDrinkReminderView(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateDrinkReminderView(void)");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreateDrinkReminderView(void)");
if (DrinkReminderGroupView == nullptr)
{
DrinkReminderGroupView = new UIViewGroup();