From: Caisking <3449750381@qq.com> Date: Mon, 29 Apr 2024 08:31:50 +0000 (+0800) Subject: 增加训练心率达到最高弹窗 X-Git-Tag: release_V1.2.70_20241020_135402~1025^2~49 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=49122c277777e05c2ea60020f060835c6930e168;p=mirrors%2FFD230.git 增加训练心率达到最高弹窗 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index 6760261b8..f918a57ba 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -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); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h index c8a69b241..68070a034 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h @@ -1,7 +1,7 @@ -/*** +/*** * @Date: 2024-04-15 11:46:23 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-04-25 10:52:21 + * @LastEditTime: 2024-04-29 11:13:01 * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h */ #ifndef _TraingCard_VIEW_H @@ -45,6 +45,7 @@ namespace OHOS #define BUTTONEXIT "button_exit" #define BUTTONBACK "button_back" #define BUTTONWINOK "buttom_win" +#define BUTTONNOTE "button_heart" enum Control_Card { @@ -55,7 +56,8 @@ namespace OHOS enum PopupType { EndPopup, - GetTagPopup + GetTagPopup, + HeartPopup, }; class TraingCardPresenter; class TrainingControlView; @@ -88,6 +90,7 @@ namespace OHOS void InitImageAnimator(); void ShowGetTagView(); void ShowEndView(); + void ShowHeartView(); bool RefreshEndView(); UICrossView *GetTraingCrad(); int GetCurrentPage(); @@ -102,6 +105,7 @@ namespace OHOS UICrossView *swipe_ = nullptr; UIScrollView *endView{nullptr}; UIScrollView *getView{nullptr}; + UIScrollView *heartView{nullptr}; TrainingControlView *ControlView{nullptr}; // 控制卡片 TrainingDataView *DataVIew{nullptr}; // 数据卡片 TrainingDetailView *DetailView{nullptr}; // 详细数据卡片 @@ -122,6 +126,12 @@ namespace OHOS UILabelButtonExt *buttonok_ = nullptr; UIImageAnimatorView *imageAnimator{nullptr}; + /*最高心率提醒弹窗*/ + UILabelExt *hearttitle = nullptr; + UILabelExt *labelnote = nullptr; + UIImageView *heartiamge = nullptr; + UILabelButtonExt *buttonnote_ = nullptr; + bool viewiInitStatus{false}; bool momentumFlag{false}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp index ebd6c1588..8d67fdcb3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp @@ -198,12 +198,6 @@ namespace OHOS { distanceStr = DEFAULT_DASH; } - // 达到最高心率进行心率提醒弹窗 - if (sportdata->heart >= 80) - // ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX)) - { - TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true); - } // std::string durationStr = std::to_string(sportdata->duration); std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH; std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH; @@ -271,6 +265,11 @@ namespace OHOS TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false); TraingCardView::GetInstance()->GetAnimator()->Stop(); } + // 心率警告退出按键 + if (strcmp(view.GetViewId(), BUTTONNOTE) == 0) + { + TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false); + } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp index d66ea0eab..89a8fa0e4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp @@ -79,10 +79,10 @@ namespace OHOS ShowEndView(); ShowGetTagView(); ShowHeartView(); - // swipe_->HorAdd(DetailView); + // swipe_->HorAdd(DetailView); swipe_->VerAdd(DetailView, UICrossView::VPage::DOWN_PAGE); - swipe_->SetHorCurrentPage(Control_Card::DATA); + swipe_->SetHorCurrentPage(Control_Card::CONTROL); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingCardView::InitPage over"); } @@ -314,6 +314,10 @@ namespace OHOS { popupView = getView; } + else if (type == HeartPopup) + { + popupView = heartView; + } if (popupView == nullptr) { @@ -383,7 +387,6 @@ namespace OHOS // 初始化Lable InitLabel(labeltitle, 83, 50, 300, 35, "label1", "目标已达成", DEFAULT_VECTOR_FONT_FILENAME, 35); getView->Add(labeltitle); - getView->Add(labeltag); InitLabel(labelgettag, 103, 307, 200, 35, "label3", "完成目标", DEFAULT_VECTOR_FONT_FILENAME, 30); getView->Add(labelgettag); InitLabel(labelpre, 233, 307, 160, 35, "label3", "100%", DEFAULT_VECTOR_FONT_FILENAME, 30); @@ -430,12 +433,11 @@ namespace OHOS heartView->Add(heartiamge); // 初始化按键 - InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONWINOK, STR_OK, 30); - buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE); - buttonok_->SetOnClickListener(static_cast(TraingCardPresenter::GetInstance())); - heartView->Add(buttonok_); + InitButtonExt(buttonnote_, 0, 366, 466, 100, BUTTONNOTE, STR_OK, 30); + buttonnote_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE); + buttonnote_->SetOnClickListener(static_cast(TraingCardPresenter::GetInstance())); + heartView->Add(buttonnote_); - InitImageAnimator(); RootView::GetInstance()->Add(heartView); heartView->SetDraggable(false); heartView->SetTouchable(true); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDetailView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDetailView.cpp index a68a6e341..a68780771 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDetailView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDetailView.cpp @@ -32,8 +32,7 @@ namespace OHOS TrainingDetailView *TrainingDetailView::GetInstance() { - static TrainingDetailView instance; - return &instance; + return g_pTrainingDetailView; } /* InitView:初始化界面*/ diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 10a22468c..43b06ba3c 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -309,7 +309,7 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa free(buf); // 释放内存空间 } -//发送训练状态 +//发送训练状态[app发起的运动] void sendtraningstatedata(uint8_t state ,uint16_t time) { char data[3]={0}; @@ -2636,12 +2636,11 @@ static void SetMaxHrRemindCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t if(Check_CRC(crcnum,len,crcvalue))// { uint8_t maxHr = crcnum[0]; - - if(maxHr > 250)maxHr = 250; + if(maxHr > 250)maxHr = 250;//最高心率是250 else if(maxHr <= 0) maxHr = 0; - set_traning_heart_max(maxHr); - //255 关闭 + //设置255 表示心率提醒关闭 + printf("设置最高心率提醒 %d\r\n",maxHr); value[17] = 1; value[18] = Calculate_CRC(value,18); sendBleData(value,19);