note->SetStyle(STYLE_TEXT_FONT, 20);
note->SetStyle(STYLE_LINE_HEIGHT, 40);
note->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
- // note->SetTextId(STR_MOTION_RECOGNITION_NOTE);//开启后,手表会在检测到你处于运动状态时发出提醒。支持的运动包括:走路、跑步、划船机、椭圆机。
+ // note->SetTextId(STR_MOTION_RECOGNITION_NOTE);//开启后,手表会在检测到你处于运动状态时发出提醒。支持的运动包括:走路、跑步 、划船机、椭圆机。
if(ConfigModel::GetInstance()->GetLanguage() == 0)
{
note->SetText("开启后,手表会在检测到你处于运动状态时发出提醒。支持的运动包括:走路、跑步、划船机、椭圆机。");
std::vector<GPSData> gpsData; // GPS数据集
bool gpsconnect{false};
bool gpsopen{false};// GPS是否开启
+ int shock_count{0}; //震动次数
+ int restshock_count{0}; //震动休息次数
};
} // namespace OHOS
return sum / sortedHeartRates.size(); // 返回平均值
}
+
#ifdef SUPPORT_CYWEE_SERVICE
/*分析数据*/
void TraingModel::AnalysisData(act_result_t *cyweeInfo) {
// 心率提醒 目前取值有问题,暂时关闭
if (sportdata->heart >= user_maxHeart && user_maxHeart != 0) {
uapi_set_screen_on_api(); // 亮屏检测
- if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() &&
- (!uapi_sleep_mode_flag_get())) {
- custom_VibratorFunc_int(0);
- custom_VibratorFunc_int(0);
- custom_VibratorFunc_int(0);
+ if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get())) {
+ if (shock_count < 10 && restshock_count < 5) {
+ custom_VibratorFunc_int(0);
+ shock_count++;
+ restshock_count = 0;
+ } else {
+ restshock_count++;
+ shock_count = 0;
+ if (restshock_count >= 5) {
+ restshock_count = 0; /* 休息满 5 次,下一轮可再震 */
+ }
+ }
}
if (TraingCardView::GetInstance()) {
GraphicService::GetInstance()->PostGraphicEvent(
if (isspecialsport_ == false) {
return;
}
-
+
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[apc:%d fpc:%d cdc:%d std:%d]",
cyweeInfo->avg_pace, cyweeInfo->max_pace,
cyweeInfo->avg_step_freq, cyweeInfo->avg_step_len);
/*分析运动心率数据*/
void TraingModel::AnalysisHeartData(uint8_t hrs) {
sportdata->heart = hrs;
- // 计算平均心率
+ // 计算平均心率
if (sportdata->heart > 50) {
sportdata->avgheart = Averageheartrate(sportdata->heart);
SetIntensity(sportdata->avgheart); // 设置训练强度
gpsData.clear(); // 清空gps数据
canvasData.clear(); // 清空画布数据
+
+ restshock_count = 0; //重置震动休息计数
+ shock_count = 0; //重置震动计数
}
uint32_t TraingModel::get_current_time() {
\r
enum Control_Card { CONTROL = 0, DATA, MUSIC };\r
enum PopupType {\r
+ None, // 无弹窗\r
EndPopup, // 结束训练弹窗\r
GetTagPopup, // 达到训练目标弹窗\r
HeartPopup, // 达到最高心率弹窗\r
std::string winbasePath = "/user/res/Training/training_GIF/win/";\r
const ImageInfo **winimageInfos;\r
ImageAnimatorInfo *winimageAnimatorInfo{nullptr};\r
+\r
+ PopupType currentPopupType = PopupType::None;\r
+ bool currentPopupStatus = false;\r
};\r
} // namespace OHOS\r
#endif // TraingCard_PRESENTER_H\r
//////////////////////////////////////////////\r
#endif\r
}\r
-/*设置弹窗状态*/\r
+/*\r
+设置弹窗状态\r
+增加 如果当前已经是这个弹窗状态 不需要设置\r
+\r
+*/\r
void TraingCardView::SetPopupViewStatus(PopupType type, bool status) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", type);\r
\r
+ if (currentPopupType == type && currentPopupStatus == status) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d already set status %d", type, status);\r
+ return;\r
+ }\r
+ currentPopupType = type;\r
+ currentPopupStatus = status;\r
+\r
UIView *popupView = nullptr;\r
- if (type == EndPopup) {\r
+ if (currentPopupType == EndPopup) {\r
popupView = endView;\r
- } else if (type == GetTagPopup) {\r
+ } else if (currentPopupType == GetTagPopup) {\r
popupView = getView;\r
- } else if (type == HeartPopup) {\r
+ } else if (currentPopupType == HeartPopup) {\r
popupView = heartView;\r
}\r
if (popupView == nullptr) {\r
}\r
UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
if (cardview != nullptr) {\r
- cardview->SetVisible(!status);\r
+ cardview->SetVisible(!currentPopupStatus);\r
}\r
- popupView->SetVisible(status);\r
+ popupView->SetVisible(currentPopupStatus);\r
//刷新\r
RootView::GetInstance()->Invalidate();\r
}\r