CONFIFMOFEL_ITEM_SLEEP_BEDTIME,//就寝时间
CONFIFMOFEL_ITEM_SLEEP_GET_UP,//起床时间
CONFIFMOFEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关
+ //久坐提醒相关
+ CONFIFMOFEL_ITEM_SEDENTARY_SWITCH,//久坐提醒开关
+ CONFIFMOFEL_ITEM_SEDENTARY_INTERVAL,//久坐提醒时间间隔(单位小时)
+ CONFIFMOFEL_ITEM_SEDENTARY_REMINDERTIME,//久坐提醒时间段
CONFIFMOFEL_ITEM_SIM_ICCID,//SIM卡的ICCID
CONFIFMOFEL_ITEM_TELECOM_DMP_TIMESEC,//注册时间戳
void SetA2DPState(bool value);
bool GetA2DPState(void);
+ /* ------------------------------ 久坐提醒相关set与get ----------------------------- */
+ void SetSedentarySwitch(const bool value);
+ bool GetSedentarySwitch();
+
+ void SetSedentaryInterval(const int value);
+ int GetSedentaryInterval();
+
+ void SetSedentaryReminderTime(const std::string& value);
+ std::string GetSedentaryReminderTime();
+
/* ---------------------------------- 运动识别相关set与get ---------------------------------- */
void SetMotionRecognition(bool state);
bool GetMotionRecognition(void);
{ConfigDataType::DATATYPE_INT, "sleep_bedtime", "0" }, //CONFIFMOFEL_ITEM_SLEEP_BEDTIME,//就寝时间
{ConfigDataType::DATATYPE_INT, "sleep_getup", "0" }, // CONFIFMOFEL_ITEM_SLEEP_GET_UP,//起床时间
{ConfigDataType::DATATYPE_INT, "sleep_remide", "0" }, // CONFIFMOFEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关
- {ConfigDataType::DATATYPE_STRING, "sim_iccid", "" },//CONFIFMOFEL_ITEM_SIM_ICCID cat1的iccid
- {ConfigDataType::DATATYPE_STRING, "telecom_regist_timesec","" },//CONFIFMOFEL_ITEM_TELECOM_DMP_TIMESEC
+ {ConfigDataType::DATATYPE_BOOL, "sedentary_switch", "false" }, // CONFIFMOFEL_ITEM_SEDENTARY_SWITCH,//久坐提醒开关
+ {ConfigDataType::DATATYPE_INT, "sedentary_interval", "1" }, // CONFIFMOFEL_ITEM_SEDENTARY_INTERVAL,//久坐提醒时间间隔
+ {ConfigDataType::DATATYPE_STRING, "sedentary_reminderTime ", "10:00-22:00" }, // CONFIFMOFEL_ITEM_SEDENTARY_REMINDERTIME,//久坐提醒时间段
+ {ConfigDataType::DATATYPE_STRING, "sim_iccid", "" },//CONFIFMOFEL_ITEM_SIM_ICCID cat1的iccid
+ {ConfigDataType::DATATYPE_STRING, "telecom_regist_timesec", "" },//CONFIFMOFEL_ITEM_TELECOM_DMP_TIMESEC
};
ConfigModel(); // 私有构造函数,确保无法在外部实例化
ConfigModel(const ConfigModel &) = delete; // 禁止拷贝构造
//#include "TraingCardPresenter.h"
#include "custom_runtime.h"
#include "producttest/include/testcat1.h"
+#include <cywee_hal.h>
//#include "Systemupgrade.h"
namespace OHOS {
return OHOS::CreateDrinkReminderView();
}
+/*显示久坐提醒视图*/
+static OHOS::UIViewGroup* showSedentaryReminderNotify(void)
+{
+ return OHOS::CreateSedentaryReminderView();
+}
+
void MsgCenterNotifyAlarmProc(const Topic topic, Request* req)
{
unused(req);
unused(topic);
unused(req);
}
-void MsgCenterNotifyInactivityProc(const Topic topic, Request* req)
+void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
{
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyInactivityProc !");
unused(topic);
- unused(req);
-}
+ PRINT("request %d\r\n", req->msgId);
+
+ cywee_inactivity_result_t *cywee_Inactivity_Info = (cywee_inactivity_result_t *)malloc(req->len);
+ if (!cywee_Inactivity_Info)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Memory allocation failure");
+ return;
+ }
+
+ int rets = memcpy_s(cywee_Inactivity_Info, req->len, (cywee_inactivity_result_t*)req->data, req->len);
+ if (rets != EOK)
+ {
+ free(cywee_Inactivity_Info);
+ cywee_Inactivity_Info = NULL;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_inactivity_result_t failed, ret = %d", rets);
+ return;
+ }
+
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->sedentary_status = %d, stand_freq = %d", cywee_Inactivity_Info->sedentary_status, cywee_Inactivity_Info->stand_freq);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->output_number = %d", cywee_Inactivity_Info->output_number);
+
+ switch (cywee_Inactivity_Info->output_number)
+ {
+ case INACTIVITY_MODE_SEDENTARY_OUTPUT:
+ NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true);
+ // if(SedentaryReminderViewEventListener::GetInstance().IsReminderTime() == true)
+ // {
+ // NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true);
+ // }
+ break;
+ default:
+ break;
+ }
+
+ free(cywee_Inactivity_Info);
+}
//APP运动相关
void MsgCenterNotifybleAPPtraining(const Topic topic, Request* req)
{
--- /dev/null
+#include "notification_manager.h"
+#include "wearable_log.h"
+#include "components/ui_button.h"
+#include "components/ui_image_view.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include <UIComponents.h>
+#include <cmsis_os2.h>
+#include <broadcast_feature.h>
+#include <service/graphic_service.h>
+#include <thread>
+#include "config/include/ConfigModel.h"
+
+namespace OHOS
+{
+
+ UIViewGroup *SedentaryReminderGroupView{nullptr};
+ UILabelExt *SedentaryReminderTitleLabel{nullptr}; // 标题: 久坐提醒
+ UIImageView *SedentaryReminderImage{nullptr};
+ UILabel *SedentaryReminderNoteLabel{nullptr}; // 久坐提醒note
+ UILabelExt *SedentaryReminderLabel{nullptr};
+ UIButton *SedentaryReminderButton{nullptr};
+
+ static constexpr const char *SedentaryReminderBUTTONVIEWID = "SedentaryReminderButton";
+
+ SedentaryReminderViewEventListener::SedentaryReminderViewEventListener()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SedentaryReminderViewEventListener::SedentaryReminderViewEventListener");
+ }
+
+ SedentaryReminderViewEventListener::~SedentaryReminderViewEventListener()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SedentaryReminderViewEventListener::~SedentaryReminderViewEventListener");
+ }
+
+ SedentaryReminderViewEventListener &SedentaryReminderViewEventListener::GetInstance()
+ {
+ static SedentaryReminderViewEventListener instance;
+ return instance;
+ }
+
+ bool SedentaryReminderViewEventListener::OnRelease(UIView &view, const ReleaseEvent &event)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SedentaryReminderViewEventListener::OnRelease");
+ UNUSED(event);
+ std::string viewId = view.GetViewId();
+ if (viewId == SedentaryReminderBUTTONVIEWID)
+ {
+ NotificationManager::GetInstance()->StopNotify();
+ }
+
+ return true;
+ }
+
+ // 是否是久坐提醒时间段内
+ bool SedentaryReminderViewEventListener::IsReminderTime()
+ {
+ // 获取当前时间
+ time_t now = time(0);
+ tm *ltm = localtime(&now);
+ int currentHour = ltm->tm_hour;
+
+ std::string ReminderTime = ConfigModel::GetInstance()->GetSedentaryReminderTime();
+ // 判断是否在提醒时间段内
+ if (ReminderTime.find(std::to_string(currentHour)) != std::string::npos)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "It's time to remind the user to move!");
+ return true;
+ }
+ return false;
+ }
+
+ /*创建久坐提醒视图*/
+ UIViewGroup *CreateSedentaryReminderView(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateSedentaryReminderView(void)");
+ if (SedentaryReminderGroupView == nullptr)
+ {
+ SedentaryReminderGroupView = new UIViewGroup();
+ if (SedentaryReminderGroupView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderGroupView new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderGroupView->SetPosition(0, 0, 466, 466);
+ SedentaryReminderGroupView->SetTouchable(true);
+ SedentaryReminderGroupView->SetDraggable(true);
+ /* ------------------------- SedentaryReminderTitleLabel ------------------------ */
+ SedentaryReminderTitleLabel = new UILabelExt();
+ if (SedentaryReminderTitleLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderTitleLabel new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderTitleLabel->SetPosition(83, 52, 300, 35);
+ SedentaryReminderTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ SedentaryReminderTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+ // SedentaryReminderTitleLabel->SetText("久坐提醒");
+ SedentaryReminderTitleLabel->SetTextId(STR_SEDENTARY_REMINDER);
+ SedentaryReminderTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ SedentaryReminderTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ SedentaryReminderTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ /* --------------------------- SedentaryReminderImage --------------------------- */
+ SedentaryReminderImage = new UIImageView();
+ if (SedentaryReminderImage == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderImage new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderImage->SetPosition(193, 130, 80, 80);
+ SedentaryReminderImage->SetSrc("/user/res/SedentaryReminder/SedentaryReminder.bin");
+ /* ------------------------- SedentaryReminderNoteLabel ------------------------- */
+ SedentaryReminderNoteLabel = new UILabel();
+ if (SedentaryReminderNoteLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderNoteLabel new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderNoteLabel->SetPosition(53, 248, 360, 70);
+ SedentaryReminderNoteLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ SedentaryReminderNoteLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+ SetLabelId(SedentaryReminderNoteLabel, STR_SEDENTARY_REMINDER_NOTE);
+ // UpdateLabel(SedentaryReminderNoteLabel,"1",STR_SEDENTARY_REMINDER_NOTE);
+ SedentaryReminderNoteLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ SedentaryReminderNoteLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ SedentaryReminderNoteLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ /* --------------------------- SedentaryReminderButton -------------------------- */
+ SedentaryReminderButton = new UIButton();
+ if (SedentaryReminderButton == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderButton new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderButton->SetPosition(0, 366, 466, 100);
+ SedentaryReminderButton->SetViewId(SedentaryReminderBUTTONVIEWID);
+ const char *buttonImgSrc = "/user/res/466x100button.bin";
+ SedentaryReminderButton->SetImageSrc(buttonImgSrc, buttonImgSrc);
+ SedentaryReminderButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff0b1928, UIButton::PRESSED);
+ UIView::OnTouchListener *listener = static_cast<UIView::OnTouchListener *>(&SedentaryReminderViewEventListener::GetInstance());
+ SedentaryReminderButton->SetOnTouchListener(listener);
+ /* --------------------------- SedentaryReminderLabel --------------------------- */
+ SedentaryReminderLabel = new UILabelExt();
+ if (SedentaryReminderLabel == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CreateSedentaryReminderView] SedentaryReminderLabel new fail!!");
+ return nullptr;
+ }
+ SedentaryReminderLabel->SetPosition(133, 399, 200, 35);
+ SedentaryReminderLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ SedentaryReminderLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+ // SedentaryReminderLabel->SetText("知道了");
+ SedentaryReminderLabel->SetTextId(STR_KONW);
+ SedentaryReminderLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+ SedentaryReminderLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ SedentaryReminderLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ /* ----------------------------------- Add ---------------------------------- */
+ SedentaryReminderGroupView->Add(SedentaryReminderTitleLabel);
+ SedentaryReminderGroupView->Add(SedentaryReminderImage);
+ SedentaryReminderGroupView->Add(SedentaryReminderNoteLabel);
+ SedentaryReminderGroupView->Add(SedentaryReminderButton);
+ SedentaryReminderGroupView->Add(SedentaryReminderLabel);
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Create SedentaryReminderView succeed!!");
+ }
+
+ return SedentaryReminderGroupView;
+ }
+
+ /*释放久坐提醒视图*/
+ void FreeSedentaryReminderView(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FreeSedentaryReminderView(void)");
+ if (SedentaryReminderGroupView != nullptr)
+ {
+ SedentaryReminderGroupView->RemoveAll();
+
+ delete SedentaryReminderTitleLabel;
+ SedentaryReminderTitleLabel = nullptr;
+
+ delete SedentaryReminderImage;
+ SedentaryReminderImage = nullptr;
+
+ delete SedentaryReminderNoteLabel;
+ SedentaryReminderNoteLabel = nullptr;
+
+ delete SedentaryReminderButton;
+ SedentaryReminderButton = nullptr;
+
+ delete SedentaryReminderLabel;
+ SedentaryReminderLabel = nullptr;
+
+ RootView::GetInstance()->Remove(SedentaryReminderGroupView);
+ delete SedentaryReminderGroupView;
+ SedentaryReminderGroupView = nullptr;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Free SedentaryReminderView succeed!!");
+ }
+ return;
+ }
+
+}
\ No newline at end of file