增加训练心率达到最高弹窗
authorCaisking <3449750381@qq.com>
Mon, 29 Apr 2024 08:31:50 +0000 (16:31 +0800)
committerCaisking <3449750381@qq.com>
Mon, 29 Apr 2024 08:31:50 +0000 (16:31 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDetailView.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 6760261..f918a57 100644 (file)
@@ -258,6 +258,7 @@ namespace OHOS
     {
         return sportState_;
     }
+    /*分析数据*/
     void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo)
     {
         // 不同的运动类型解析不同的数据
@@ -269,7 +270,14 @@ namespace OHOS
         SetIntensity(sportdata->heart); // 设置训练强度
         if (sportdata->heart > 50)
         {
-            sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理平均心率
+            sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理正常的平均心率
+        }
+        // 达到最高心率进行心率提醒弹窗
+        if (sportdata->heart >= ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX))
+        {
+            uapi_set_screen_on_api(); // 亮屏检测
+            custom_VibratorFunc(VibratorType::VIBRATOR_TYPE_TWO);
+            TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true);
         }
         // sportdata->duration = cyweeInfo->duration;
         PRINT("normal sportdata->calories[%d],sportdata->heart[%d] \r\n", sportdata->calories, sportdata->heart);
index c8a69b2..68070a0 100644 (file)
@@ -1,7 +1,7 @@
-/*** \r
+/***\r
  * @Date: 2024-04-15 11:46:23\r
  * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-04-25 10:52:21\r
+ * @LastEditTime: 2024-04-29 11:13:01\r
  * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h\r
  */\r
 #ifndef _TraingCard_VIEW_H\r
@@ -45,6 +45,7 @@ namespace OHOS
 #define BUTTONEXIT "button_exit"\r
 #define BUTTONBACK "button_back"\r
 #define BUTTONWINOK "buttom_win"\r
+#define BUTTONNOTE "button_heart"\r
 \r
     enum Control_Card\r
     {\r
@@ -55,7 +56,8 @@ namespace OHOS
     enum PopupType\r
     {\r
         EndPopup,\r
-        GetTagPopup\r
+        GetTagPopup,\r
+        HeartPopup,\r
     };\r
     class TraingCardPresenter;\r
     class TrainingControlView;\r
@@ -88,6 +90,7 @@ namespace OHOS
         void InitImageAnimator();\r
         void ShowGetTagView();\r
         void ShowEndView();\r
+        void ShowHeartView();\r
         bool RefreshEndView();\r
         UICrossView *GetTraingCrad();\r
         int GetCurrentPage();\r
@@ -102,6 +105,7 @@ namespace OHOS
         UICrossView *swipe_ = nullptr;\r
         UIScrollView *endView{nullptr};\r
         UIScrollView *getView{nullptr};\r
+        UIScrollView *heartView{nullptr};\r
         TrainingControlView *ControlView{nullptr}; // 控制卡片\r
         TrainingDataView *DataVIew{nullptr};       // 数据卡片\r
         TrainingDetailView *DetailView{nullptr};   // 详细数据卡片\r
@@ -122,6 +126,12 @@ namespace OHOS
         UILabelButtonExt *buttonok_ = nullptr;\r
         UIImageAnimatorView *imageAnimator{nullptr};\r
 \r
+        /*最高心率提醒弹窗*/\r
+        UILabelExt *hearttitle = nullptr;\r
+        UILabelExt *labelnote = nullptr;\r
+        UIImageView *heartiamge = nullptr;\r
+        UILabelButtonExt *buttonnote_ = nullptr;\r
+\r
         bool viewiInitStatus{false};\r
         bool momentumFlag{false};\r
     };\r
index ebd6c15..8d67fdc 100644 (file)
@@ -198,12 +198,6 @@ namespace OHOS
         {\r
             distanceStr = DEFAULT_DASH;\r
         }\r
-        // 达到最高心率进行心率提醒弹窗\r
-        if (sportdata->heart >= 80)\r
-        // ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX))\r
-        {\r
-            TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true);\r
-        }\r
         // std::string durationStr = std::to_string(sportdata->duration);\r
         std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
         std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
@@ -271,6 +265,11 @@ namespace OHOS
             TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
             TraingCardView::GetInstance()->GetAnimator()->Stop();\r
         }\r
+        // 心率警告退出按键\r
+        if (strcmp(view.GetViewId(), BUTTONNOTE) == 0)\r
+        {\r
+            TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
+        }\r
         return true;\r
     }\r
 \r
index d66ea0e..89a8fa0 100644 (file)
@@ -79,10 +79,10 @@ namespace OHOS
         ShowEndView();\r
         ShowGetTagView();\r
         ShowHeartView();\r
-        // swipe_->HorAdd(DetailView);\r
+        //  swipe_->HorAdd(DetailView);\r
 \r
         swipe_->VerAdd(DetailView, UICrossView::VPage::DOWN_PAGE);\r
-        swipe_->SetHorCurrentPage(Control_Card::DATA);\r
+        swipe_->SetHorCurrentPage(Control_Card::CONTROL);\r
 \r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingCardView::InitPage over");\r
     }\r
@@ -314,6 +314,10 @@ namespace OHOS
         {\r
             popupView = getView;\r
         }\r
+        else if (type == HeartPopup)\r
+        {\r
+            popupView = heartView;\r
+        }\r
 \r
         if (popupView == nullptr)\r
         {\r
@@ -383,7 +387,6 @@ namespace OHOS
         // 初始化Lable\r
         InitLabel(labeltitle, 83, 50, 300, 35, "label1", "目标已达成", DEFAULT_VECTOR_FONT_FILENAME, 35);\r
         getView->Add(labeltitle);\r
-        getView->Add(labeltag);\r
         InitLabel(labelgettag, 103, 307, 200, 35, "label3", "完成目标", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
         getView->Add(labelgettag);\r
         InitLabel(labelpre, 233, 307, 160, 35, "label3", "100%", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
@@ -430,12 +433,11 @@ namespace OHOS
         heartView->Add(heartiamge);\r
 \r
         // 初始化按键\r
-        InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONWINOK, STR_OK, 30);\r
-        buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
-        buttonok_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
-        heartView->Add(buttonok_);\r
+        InitButtonExt(buttonnote_, 0, 366, 466, 100, BUTTONNOTE, STR_OK, 30);\r
+        buttonnote_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
+        buttonnote_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
+        heartView->Add(buttonnote_);\r
 \r
-        InitImageAnimator();\r
         RootView::GetInstance()->Add(heartView);\r
         heartView->SetDraggable(false);\r
         heartView->SetTouchable(true);\r
index a68a6e3..a687807 100644 (file)
@@ -32,8 +32,7 @@ namespace OHOS
 
     TrainingDetailView *TrainingDetailView::GetInstance()
     {
-        static TrainingDetailView instance;
-        return &instance;
+        return g_pTrainingDetailView;
     }
 
     /* InitView:初始化界面*/
index 10a2246..43b06ba 100644 (file)
@@ -309,7 +309,7 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa
 \r
     free(buf); // 释放内存空间\r
 }\r
-//发送训练状态\r
+//发送训练状态[app发起的运动]\r
 void sendtraningstatedata(uint8_t state ,uint16_t time)\r
 {\r
     char data[3]={0};\r
@@ -2636,12 +2636,11 @@ static void SetMaxHrRemindCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
     if(Check_CRC(crcnum,len,crcvalue))//\r
     {\r
         uint8_t maxHr = crcnum[0];\r
-\r
-        if(maxHr > 250)maxHr = 250;\r
+        if(maxHr > 250)maxHr = 250;//最高心率是250\r
         else if(maxHr <= 0) maxHr = 0;\r
-\r
         set_traning_heart_max(maxHr);\r
-        //255 关闭\r
+        //设置255  表示心率提醒关闭\r
+        printf("设置最高心率提醒 %d\r\n",maxHr);\r
         value[17] = 1;\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r