优化骑行可以存储心率数据 3197/target/2 3198/1 3198/head
authorCaisking <Casiking@zhihuishixun.com>
Sat, 7 Feb 2026 02:42:32 +0000 (10:42 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Sat, 7 Feb 2026 02:42:32 +0000 (10:42 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingModel.cpp

index 04e1d08..4890703 100644 (file)
  void TraingModel::IsSpecialSport(UIResourceTextId sportId_) {
    switch (sportId_) {
    case UIResourceTextId::STR_EXERCISE_OUTDOORRUNNING: // 室外跑步 室外走路
-   case UIResourceTextId::STR_EXERCISE_OUTDOORWALKING:
+   case UIResourceTextId::STR_EXERCISE_OUTDOORWALKING:  
    case UIResourceTextId::STR_EXERCISE_INDOORRUNNING: // 室内跑步 室内走路
    case UIResourceTextId::STR_EXERCISE_INDOORWALKING:
    case UIResourceTextId::STR_EXERCISE_TREADMILL: // 跑步机
@@ -1745,24 +1745,21 @@ bool TraingModel::GetMomentum() {
    std::string exactFilePath =
        TRAINING_HEART_FILE + std::to_string(timestamp) + ".bin";
    if (IsFileAccessibleAndNotEmpty(exactFilePath)) {
-     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "找到心率表: %s",
-                   exactFilePath.c_str());
+     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "找到心率表: %s", exactFilePath.c_str());
      return exactFilePath; // 返回完全匹配的文件路径
    }
  
-   // 如果未找到,检查时间戳相差1到2秒的文件
-   for (int i = -2; i <= 2; ++i) {
+   // 如果未找到,检查时间戳相差5秒的文件
+   for (int i = -5; i <= 5; ++i) {
      uint32_t checkTimestamp = timestamp + i;
-     std::string filePath =
-         TRAINING_HEART_FILE + std::to_string(checkTimestamp) + ".bin";
+     std::string filePath = TRAINING_HEART_FILE + std::to_string(checkTimestamp) + ".bin";
      if (IsFileAccessibleAndNotEmpty(filePath)) {
-       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "找到心率表: %s",
-                     filePath.c_str());
+       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "找到心率表: %s", filePath.c_str());
        return filePath; // 返回找到的文件路径
      }
    }
  
-   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "未找到与时间戳相关的心率表。");
+   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "未找到与时间戳相关的心率表。%d", timestamp);
    return ""; // 未找到文件
  }
  
@@ -1777,8 +1774,8 @@ bool TraingModel::GetMomentum() {
      return exactFilePath; // 返回完全匹配的文件路径
    }
  
-   // 如果未找到,检查时间戳相差1到2秒的文件
-   for (int i = -2; i <= 2; ++i) {
+   // 如果未找到,检查时间戳相差5秒的文件
+   for (int i = -5; i <= 5; ++i) {
      uint32_t checkTimestamp = timestamp + i;
      std::string filePath =
          TRAINING_PACE_FILE + std::to_string(checkTimestamp) + ".bin";
@@ -1789,7 +1786,7 @@ bool TraingModel::GetMomentum() {
      }
    }
  
-   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "未找到与时间戳相关的配速表。");
+   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "未找到与时间戳相关的配速表。%d", timestamp);
    return ""; // 未找到文件
  }
  /*发送实时数据*/
@@ -1916,8 +1913,11 @@ bool TraingModel::GetMomentum() {
      if (uapi_get_timestampe_ss(&timestamp) == ERRCODE_SUCC) {
        if (sportdata->heart != 0)
          AddHeartRateData(timestamp, sportdata->heart);
-       if (sportdata->apc != 0)
-         AddPaceData(timestamp, sportdata->apc);
+        //特殊运动才存储配速数据
+         if (OHOS::TraingModel::GetInstance()->GetIsSpecial()) {
+           if (sportdata->apc != 0)
+             AddPaceData(timestamp, sportdata->apc);
+         }
      }
    }
  
@@ -1965,9 +1965,8 @@ bool TraingModel::GetMomentum() {
    OHOS::TraingModel::GetInstance()->CheckTimeTag();
  
    // 记录特殊活动的心率/配速数据
-   if (OHOS::TraingModel::GetInstance()->GetIsSpecial()) {
-     OHOS::TraingModel::GetInstance()->StoreDataIfMinutePassed();
-   }
+    OHOS::TraingModel::GetInstance()->StoreDataIfMinutePassed();
+   
  
    // 振动反馈
    if ((sportdata->goaldegree >= 100) && (shock_count < 4)) {