{
return sportState_;
}
+ /*分析数据*/
void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo)
{
// 不同的运动类型解析不同的数据
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);
-/*** \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
#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
enum PopupType\r
{\r
EndPopup,\r
- GetTagPopup\r
+ GetTagPopup,\r
+ HeartPopup,\r
};\r
class TraingCardPresenter;\r
class TrainingControlView;\r
void InitImageAnimator();\r
void ShowGetTagView();\r
void ShowEndView();\r
+ void ShowHeartView();\r
bool RefreshEndView();\r
UICrossView *GetTraingCrad();\r
int GetCurrentPage();\r
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
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
{\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
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
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
{\r
popupView = getView;\r
}\r
+ else if (type == HeartPopup)\r
+ {\r
+ popupView = heartView;\r
+ }\r
\r
if (popupView == nullptr)\r
{\r
// 初始化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
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
TrainingDetailView *TrainingDetailView::GetInstance()
{
- static TrainingDetailView instance;
- return &instance;
+ return g_pTrainingDetailView;
}
/* InitView:初始化界面*/
\r
free(buf); // 释放内存空间\r
}\r
-//发送训练状态\r
+//发送训练状态[app发起的运动]\r
void sendtraningstatedata(uint8_t state ,uint16_t time)\r
{\r
char data[3]={0};\r
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