Distance,
Calories,
Duration,
- STEP,
+ Steps,
UNKNOW,
};
/*定时器 */
std::string DisplayMotionDuration();
- /*设置运动类型*/
- void SetSportType(Exercisetype type);
- /*获取运动类型图片*/
- std::string GetSportType(Exercisetype sporttype);
- std::string GetSportIcon(Exercisetype sporttype);
- /*设置运动项目*/
- void SetSportEvent(UIResourceTextId id);
- /*获取运动项目*/
- UIResourceTextId GetSportEvent();
- /*获取运动项目Id*/
- ExerciseClass GetSportId();
- /*设置运动状态*/
- void SetSportState(ExerciseState state);
- /*获取运动状态*/
- ExerciseState GetSportState();
- /*解析传输过来的数据*/
- void AnalysisData(cywee_activity_result_t *cyweeInfo);
- /*解析运动额外数据*/
- void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo);
- /*获取训练数据*/
- SportData *GetSportdata();
- /*设置训练数据[为训练记录准备]*/
- void SetSportdata(SportData *data);
- /*获取运动卡路里*/
- int GetCal();
- /*解析时间戳*/
- std::string AnalysisTimestamp(uint64_t timestamp);
- /*获取运动总时长*/
- std::string GetTrainingTime();
- /*设置训练目标类型以及训练目标*/
- void SetSportTag(ExerciseTag tagtpye, int tag);
- /*获取训练目标*/
- int GetSportTag();
- /*获取项目目标类型*/
- ExerciseTag GetSportTagtype();
- /*设置训练强度*/
- void SetIntensity(int heart);
- /*获取训练强度STR*/
- UIResourceTextId GetIntensity();
- /*获取对应的训练目标的值*/
- int GetSportTagData();
- /*获取训练目标完成百分比*/
- int GetGoaldegree();
- /*保存数据*/
- bool SaveSportData();
- /*设置运动开始方式*/
- void SetSportOpenWay(bool way);
- /*设置运动是否开始*/
- void SetSportOpenState(bool state);
- /*获取运动是否开始*/
- bool GetSportOpenState();
- /*获取训练量是否达标*/
- bool GetMomentum();
- /*发送实时数据*/
- void SendLiveData();
- /*打印数据*/
- void printTrainingData(const Trainingdata &data);
-
- std::string GetStartTiemStr();
- std::string GetEndTiemStr();
-
- /*平均心率计算*/
- int CalculateAverageHeartRate(int newHeartRate);
- /*显示心率计算*/
- int CalculateFilteredHeartRate(int newHeartRate);
-
- int Averageheartrate(int newHeartRate);
-
- /*保存训练记录到json文件*/
- bool CheckDataJson();
- bool SaveDataToJson(SportData *data);
- std::vector<SportData> LoadDataFormJson();
-
- /*打印函数*/
- void printf_data(SportData *data);
- /*获取协议Id*/
- int GetBleSportId(Exercisetype sporttype, UIResourceTextId id);
- /*获取训练类Id*/
- UIResourceTextId GetSportTypeId(Exercisetype type);
-
- /*重新初始化训练配置*/
- void ResetSharedTrainingData();
- /*设置训练开始与结束*/
- void SetTimestamp();
- /*设置开始时间*/
- void SetStartDateTime();
- /*设置结束时间*/
- void SetEndTime();
- /*获取日期*/
- bool GetFormattedDate(std::string &dateOutput, const char *errorMsg);
- /*获取时间*/
- bool GetFormattedTime(std::string &timeOutput, const char *errorMsg);
- /*保存数据*/
- void RecordSportData();
-
- /*进入训练方式*/
- void SetEntryType(ENTEYTYPE type);
- ENTEYTYPE GetEntryType();
-
- /*判断是否为特殊运动*/
- void IsSpecialSport(UIResourceTextId sportId_);
- bool GetIsSpecial();
+
+ // 训练存储相关配置
+ bool CheckDataJson(); /*判断json文件是否存在*/
+ bool SaveDataToJson(SportData *data); /*保存训练记录到json文件*/
+ std::vector<SportData> LoadDataFormJson(); /*加载json文件*/
+ void RecordSportData(); /*保存数据*/
+
+ // 训练数据相关配置
+ void AnalysisData(cywee_activity_result_t *cyweeInfo); /*解析传输过来的数据*/
+ void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo); /*解析运动额外数据*/
+ SportData *GetSportdata(); /*获取训练数据*/
+ void SetIntensity(int heart); /*设置训练强度*/
+ UIResourceTextId GetIntensity(); /*获取训练强度STR*/
+ bool SaveSportData(); /*保存数据*/
+ void SendLiveData(); /*发送实时数据*/
+ int CalculateAverageHeartRate(int newHeartRate); /*平均心率计算*/
+ int CalculateFilteredHeartRate(int newHeartRate); /*显示心率计算*/
+ int Averageheartrate(int newHeartRate); /*平均心率窗口数*/
+ void SetSportdata(SportData *data); /*设置训练数据[为训练记录准备]*/
+ int GetCal(); /*获取运动卡路里*/
+
+ // 训练状态相关配置
+ void SetEntryType(ENTEYTYPE type); /*设置进入训练方式*/
+ ENTEYTYPE GetEntryType(); /*获取训练进入方式*/
+ void SetSportOpenWay(bool way); /*设置运动开始方式*/
+ void SetSportOpenState(bool state); /*设置运动是否开始*/
+ bool GetSportOpenState(); /*获取运动是否开始*/
+ bool GetMomentum(); /*获取训练量是否达标*/
+ void SetSportState(ExerciseState state); /*设置运动状态*/
+ ExerciseState GetSportState(); /*获取运动状态*/
+ void ResetSharedTrainingData(); /*重新初始化训练配置*/
+
+ // 训练时间相关配置
+ std::string AnalysisTimestamp(uint64_t timestamp); /*解析时间戳*/
+ std::string GetTrainingTime(); /*获取运动总时长*/
+ std::string GetStartTiemStr(); /*获取开始时间Str*/
+ std::string GetEndTiemStr(); /*获取结束时间Str*/
+ void SetTimestamp(); /*设置训练开始与结束*/
+ void SetStartDateTime(); /*设置开始时间*/
+ void SetEndTime(); /*设置结束时间*/
+ bool GetFormattedDate(std::string &dateOutput, const char *errorMsg); /*获取日期*/
+ bool GetFormattedTime(std::string &timeOutput, const char *errorMsg); /*获取时间*/
+
+ // 训练项相关配置
+ void IsSpecialSport(UIResourceTextId sportId_); /*判断是否为特殊训练*/
+ bool GetIsSpecial(); /*获取是否为特殊训练*/
+ void SetSportEvent(UIResourceTextId id); /*设置运动项目*/
+ UIResourceTextId GetSportEvent(); /*获取运动项目*/
+ ExerciseClass GetSportId(); /*获取运动项目Id*/
+ int GetBleSportId(Exercisetype sporttype, UIResourceTextId id); /*获取协议Id*/
+ UIResourceTextId GetSportTypeId(Exercisetype type); /*获取训练类Id*/
+ void SetSportType(Exercisetype type); /*设置运动类型*/
+ std::string GetSportType(Exercisetype sporttype); /*获取训练类型type图片*/
+ std::string GetSportIcon(Exercisetype sporttype); /*获取训练类型icon图片*/
+
+ // 训练目标相关配置
+ void SetSportTag(ExerciseTag tagtpye, int tag); /*设置训练目标类型以及训练目标*/
+ int GetSportTag(); /*获取训练目标*/
+ ExerciseTag GetSportTagtype(); /*获取项目目标类型*/
+ int GetSportTagData(); /*获取对应的训练目标的值*/
+ int GetGoaldegree(); /*获取训练目标完成百分比*/
+ std::string GetTagStr(); /*获取训练目标Str*/
+
+ // 打印配置
+ void printTrainingData(const Trainingdata &data); /*打印数据*/
+ void printf_data(SportData *data); /*打印函数*/
private:
TraingModel(const TraingModel &) = delete;
ENTEYTYPE entey_type = ENTEYTYPE::MAIN_ENTER; // 进入方式
bool isspecialsport_{false};
-
- // int currentdata = 0; // 当前目标配置
-
int sportTag_ = 0; // 训练目标
int freq = 0; // 训练发送数据频率
bool ChangeSetDurationView(int16_t thisview);
bool ClickFunc(int16_t interface);
void ChangeView(int16_t hideView, int16_t showView);
-
+ void BonusdataView(); // 配置额外数据
+
void SetCurrentViewId(int viewId)
{
CurrentViewId = viewId;
void TraingModel::SetSportEvent(UIResourceTextId id)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SetSportType %d", sportId_);
+ IsSpecialSport(id); // 设置特殊性
sportId_ = id;
}
/*获取运动Id*/
{
return isspecialsport_;
}
+ /*获取目标字符串*/
+ std::string TraingModel::GetTagStr()
+ {
+ /*
+ 通用目标配置: 时长、卡路里
+ 不通用目标配置: 步数、距离
+
+ 如果配置项是特殊目标
+ -> 普通训练: 无训练目标
+ -> 特殊训练: 有训练目标
+ */
+
+ std::string tagStr;
+
+ switch (sportTagType_)
+ {
+ case ExerciseTag::Duration:
+ tagStr = std::to_string(sportTag_) + " min"; // 时长目标
+ break;
+
+ case ExerciseTag::Calories:
+ tagStr = std::to_string(sportTag_) + " kcal"; // 卡路里目标
+ break;
+
+ case ExerciseTag::Steps:
+ case ExerciseTag::Distance:
+ if (isspecialsport_) // 检查是否为特殊训练
+ {
+ // 只在特殊训练模式下使用步数和距离目标
+ if (sportTagType_ == ExerciseTag::Steps)
+ {
+ tagStr = std::to_string(sportTag_) + " steps"; // 步数目标
+ }
+ else
+ {
+ tagStr = std::to_string(sportTag_) + " km"; // 距离目标
+ }
+ }
+ else
+ {
+ tagStr = ""; // 普通训练下不使用目标
+ }
+ break;
+ default:
+ tagStr = ""; // 未知目标类型
+ break;
+ }
+
+ return tagStr;
+ }
/*设置运动状态*/
void TraingModel::SetSportState(ExerciseState state)
{
int maxHeartRate = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);
if (sportdata->heart >= maxHeartRate)
{
- uapi_set_screen_on_api(); // 亮屏检测
- if(true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb())
+ uapi_set_screen_on_api(); // 亮屏检测
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb())
{
ui_api_vibrate_once_func();
}
{
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentdata%d", currentdata);
uapi_set_screen_on_api(); // 亮屏检测
- if(true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb())
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb())
{
ui_api_vibrate_once_func();
}
Startstate = false;
Endstate = true;
+#if 0
// 重置训练目标 [发生在训练前]
sportTag_ = 0;
sportTagType_ = ExerciseTag::UNKNOW;
+#endif
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "结束运动");
}
break;
}
}
+ /*获取当前的目标值*/
int TraingModel::GetSportTagData()
{
if (sportdata->tag)
case ExerciseTag::Distance:
return sportdata->distance;
break;
- case ExerciseTag::STEP:
+ case ExerciseTag::Steps:
return sportdata->steps;
break;
default:
}
UIResourceTextId sport_id = TraingModel::GetInstance()->GetSportEvent();
+
// 初始化Lable
InitLabelExt(sporttitle_, 137, 52, 200, 80, "label1", sport_id, DEFAULT_VECTOR_FONT_FILENAME, 30);
container_->Add(sporttitle_);
// 显示设置目标
InitButtonExt(buttonSet_, 160, 370, 150, 50, BUTTONSET, STR_SET_GOALS, 30);
+ if (TraingModel::GetInstance()->GetTagStr() != "")
+ {
+ buttonSet_->SetText((TraingModel::GetInstance()->GetTagStr()).c_str());
+ }
buttonSet_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键
buttonSet_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
buttonSet_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明
delete buttonSet_;
buttonSet_ = nullptr;
}
-
}
void TraingNomalView::PreLoad(void)
}
// 更新训练目标 [考虑 通用目标 特殊目标]
- void TraingNomalView::UpdateTraingTag() {}
+ void TraingNomalView::UpdateTraingTag()
+ {
+ // buttonSet_->SetText();
+ }
void TraingNomalView::OnSetUpView()
{
RootView::GetInstance()->RemoveAll();
RootView::GetInstance()->ClearOnKeyActListener();
- //FocusManager::GetInstance()->ClearFocus();
+ // FocusManager::GetInstance()->ClearFocus();
return;
}
}
*/\r
ExerciseTag TraingSetPresenter::GetExerciseTagFromCard(int cardID)\r
{\r
- ;\r
switch (cardID)\r
{\r
case SET_DURATION:\r
case SET_DISTANCE:\r
return ExerciseTag::Distance;\r
case SET_STEPS:\r
- return ExerciseTag::STEP;\r
+ return ExerciseTag::Steps;\r
default:\r
return ExerciseTag::UNKNOW;\r
}\r
{\r
return g_pTraingSetView;\r
}\r
+ /*增加额外配置项*/\r
+ void TraingSetView ::BonusdataView()\r
+ {\r
+ InitButton(butDistance, 43, 360, 380, 100, BUTTONDISTANCE);\r
+ InitButton(butSteps, 43, 480, 380, 100, BUTTONSTEPS);\r
+ butDistance->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
+ butSteps->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
+ group->Add(butDistance);\r
+ group->Add(butSteps);\r
\r
+ InitLabelExt(labelDistance, 100, 390, 150, 35, "label3", STR_DISTANCE, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabelExt(labelSteps, 100, 510, 150, 35, "label5", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ group->Add(labelDistance);\r
+ group->Add(labelSteps);\r
+\r
+ InitImageView(imagedistance, 70, 390, 100, 100, "image5", MILEAGE_IMAGE);\r
+ InitImageView(imagesteps, 70, 510, 100, 100, "image6", WALKING_IMAGE);\r
+ InitImageView(imagicon3, 380, 400, 100, 100, "image3", ICON_IMAGE);\r
+ InitImageView(imagicon4, 380, 520, 100, 100, "image4", ICON_IMAGE);\r
+ group->Add(imagedistance);\r
+ group->Add(imagesteps);\r
+ group->Add(imagicon3);\r
+ group->Add(imagicon4);\r
+ }\r
/* InitView:初始化界面*/\r
void TraingSetView ::InitView()\r
{\r
group->SetPosition(0, 0, 466, 466);\r
group->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
}\r
+ // 初始化Lable\r
+ UIResourceTextId sportid = TraingModel::GetInstance()->GetSportEvent();\r
+ InitLabelExt(labeltitle, 83, 50, 300, 35, "label1", sportid, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ group->Add(labeltitle);\r
+\r
// 初始化Button\r
InitButton(butTime, 43, 120, 380, 100, BUTTONTIME);\r
InitButton(butKcal, 43, 240, 380, 100, BUTTONCALULI);\r
butTime->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
butKcal->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
-\r
- InitButton(butDistance, 43, 360, 380, 100, BUTTONDISTANCE);\r
- InitButton(butSteps, 43, 480, 380, 100, BUTTONSTEPS);\r
- butDistance->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
- butSteps->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
-\r
group->Add(butTime);\r
group->Add(butKcal);\r
- group->Add(butDistance);\r
- group->Add(butSteps);\r
- // 初始化Lable\r
- UIResourceTextId sportid = TraingModel::GetInstance()->GetSportEvent();\r
- InitLabelExt(labeltitle, 83, 50, 300, 35, "label1", sportid, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
\r
InitLabelExt(labelTime, 100, 150, 150, 35, "label2", STR_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
InitLabelExt(labelKcal, 100, 270, 150, 35, "label4", STR_CALORIE, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- InitLabelExt(labelDistance, 100, 390, 150, 35, "label3", STR_DISTANCE, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- InitLabelExt(labelSteps, 100, 510, 150, 35, "label5", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
- group->Add(labeltitle);\r
group->Add(labelTime);\r
group->Add(labelKcal);\r
- group->Add(labelDistance);\r
- group->Add(labelSteps);\r
\r
// 初始化Image\r
InitImageView(imagetime, 70, 150, 100, 100, "image1", TIME_IMAGE);\r
InitImageView(imagcal, 70, 270, 100, 100, "image2", CALORIES_IMAGE);\r
- InitImageView(imagedistance, 70, 390, 100, 100, "image5", MILEAGE_IMAGE);\r
- InitImageView(imagesteps, 70, 510, 100, 100, "image6", WALKING_IMAGE);\r
-\r
InitImageView(imagicon1, 380, 160, 100, 100, "image3", ICON_IMAGE);\r
InitImageView(imagicon2, 380, 280, 100, 100, "image4", ICON_IMAGE);\r
- InitImageView(imagicon3, 380, 400, 100, 100, "image3", ICON_IMAGE);\r
- InitImageView(imagicon4, 380, 520, 100, 100, "image4", ICON_IMAGE);\r
-\r
group->Add(imagetime);\r
group->Add(imagcal);\r
- group->Add(imagedistance);\r
- group->Add(imagesteps);\r
-\r
group->Add(imagicon1);\r
group->Add(imagicon2);\r
- group->Add(imagicon3);\r
- group->Add(imagicon4);\r
}\r
/* DeInit:删除组件 */\r
void TraingSetView::DeInit()\r
group->SetDraggable(true);\r
\r
PreLoad();\r
+\r
+ if (TraingModel::GetInstance()->GetIsSpecial())\r
+ {\r
+ BonusdataView();\r
+ }\r
+\r
SetKeyActListener();\r
// RootView::GetInstance()->Add(SetTagScrollView[SET_VIEW]);\r
// SetCurrentViewId(SET_VIEW); // 设置当前页面ID\r
{\r
View<TraingSetPresenter>::OnStop();\r
\r
-\r
group->RemoveAll();\r
RootView::GetInstance()->ClearOnKeyActListener();\r
- //FocusManager::GetInstance()->ClearFocus();\r
+ // FocusManager::GetInstance()->ClearFocus();\r
RootView::GetInstance()->RemoveAll();\r
return;\r
}\r
tagString = tagString + "km";\r
break;\r
}\r
- case ExerciseTag::STEP:\r
+ case ExerciseTag::Steps:\r
break;\r
default:\r
break;\r