}
// 心率提醒
- int maxHeartRate = ConfigModel::GetInstance()->get_configData_int(
- ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);
- if (sportdata->heart >= maxHeartRate) {
+ if (sportdata->heart >= user_maxHeart) {
uapi_set_screen_on_api(); // 亮屏检测
if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() &&
(!uapi_sleep_mode_flag_get())) {
// 设置训练 runtime 为 1 训练中
uapi_dev_runtime_set_train_status(1);
+ //更新用户数据
+ SetUserSportdata();
+
ResetSharedTrainingData(); // 重置共享训练数据
printf("SetTimestamp::time:%u \r\n", time);
高等强度=最高心率*70%~79%
超高强度=最高心率*80%以上
*/
- int age = ConfigModel::GetInstance()->GetUserAge();
- int maxHeartRate = MAX_HEART_RATE - age;
-
// 确保最大心率为正值
- if (maxHeartRate <= 0) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "maxHeartRate %d is error",
- maxHeartRate);
+ if (user_Intensity <= 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "maxHeartRate %d is error", user_Intensity);
return;
}
// 将 heart 转换为 double 以避免整数除法
double heartRateAsDouble = static_cast<double>(heart);
- double intensityPercentage = (heartRateAsDouble / (double)maxHeartRate) * 100;
+ double intensityPercentage =
+ (heartRateAsDouble / (double)user_Intensity) * 100;
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
"heart: %d, maxHeartRate: %d, intensityPercentage: %.2f", heart,
- maxHeartRate, intensityPercentage);
+ HeartModel, intensityPercentage);
if (intensityPercentage < LOW_INTENSITY_THRESHOLD) {
// 较低强度
}
return MomentumFlag;
}
+
+//用户运动数据配置
+void TraingModel::SetUserSportdata() {
+ // 获取用户的最高心率提醒
+ user_maxHeart = ConfigModel::GetInstance()->get_configData_int(
+ ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "用户最高心率提醒: %d", user_maxHeart);
+
+ // 获取用户年龄
+ user_Age = ConfigModel::GetInstance()->GetUserAge();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "用户年龄: %d", user_Age);
+
+ // 获取自动训练设置
+ user_autoget = ConfigModel::GetInstance()->get_configData_int(
+ ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "自动获取设置: %d", user_autoget);
+
+ // 获取训练频率设置
+ user_freq = ConfigModel::GetInstance()->get_configData_int(
+ ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "训练频率: %d", user_freq);
+
+ user_Intensity = MAX_HEART_RATE - user_Age;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "用户运动强度心率: %d",
+ user_Intensity);
+}
/*配速表与心率表相关*/
//清空心率表
void TraingModel::ClearHeartTable() {
// 检查并发送实时数据
void TraingModel::SendLiveDataIfNecessary() {
// 检查自动获取的配置
- if (ConfigModel::GetInstance()->get_configData_int(
- ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO)) {
-
- freq = ConfigModel::GetInstance()->get_configData_int(
- ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "freq is %d\r\n", freq);
-
+ if (user_autoget) {
// 发送实时数据
- if (sportdata->duration % freq == 0) {
+ if (sportdata->duration % user_freq == 0) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is OK\r\n");
SendLiveData(); // 发送实时数据
}
cJSON_AddNumberToObject(sportData, "apc", data->apc); // 训练平均配速
cJSON_AddNumberToObject(sportData, "cdc", data->cdc); // 训练步频
cJSON_AddNumberToObject(sportData, "std", data->std); // 训练步幅
+ cJSON_AddNumberToObject(sportData, "calories", data->calories); //卡路里
// 添加运动数据节点到数组并限制数量
cJSON_AddItemToArray(dataArray, sportData);
cJSON_AddNumberToObject(sportData, "avgHeartRate", data->avgheart);
cJSON_AddNumberToObject(sportData, "steps", data->steps);
cJSON_AddNumberToObject(sportData, "intensity", data->intensity);
+ cJSON_AddNumberToObject(sportData, "calories", data->calories);
cJSON_AddItemToArray(dataArray, sportData);