修复骑行轨迹的显示错误
authorCaisking <Casiking@zhihuishixun.com>
Wed, 14 Jan 2026 11:55:50 +0000 (19:55 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Wed, 14 Jan 2026 11:55:50 +0000 (19:55 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traingrecord/src/TraingRecordPresenter.cpp

index 6ad1e38..a7d78ba 100644 (file)
@@ -748,7 +748,7 @@ void TraingEnddataView::OnStart() {
         if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == true) {
           WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载成功");
         } else {
-          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败"); 
         }
       }
     }
index a21bc71..2950ef2 100644 (file)
    // printf_data(sportdata);
    return sportdata;
  }
- /* 设置训练数据[为训练记录准备] */
- void TraingModel::SetSportdata(SportData *data) {
-   if (data != nullptr && sportdata != nullptr) {
-     sportdata->sportType = data->sportType;
-     sportdata->sportId = data->sportId;
-     sportdata->start_date = data->start_date;
-     sportdata->start_time = data->start_time;
-     sportdata->end_time = data->end_time;
-     sportdata->goaldegree = data->goaldegree;
-     sportdata->duration = data->duration;
-     sportdata->distance = data->distance;
-     sportdata->avgheart = data->avgheart;
-     sportdata->steps = data->steps;
-     sportdata->intensity = data->intensity;
-     sportdata->calories = data->calories;
-     sportdata->apc = data->apc;
-     sportdata->fpc = data->fpc;
-     sportdata->spc = data->spc;
-     sportdata->std = data->std;
-     sportdata->cdc = data->cdc;
-     sportdata->starttime = data->starttime; //更新开始时间
-     printf_data(data);                      //打印该运动数据
-     IsSpecialSport(sportdata->sportId);     // 配置训练特殊性
-   }
- }
+/* 设置训练数据[为训练记录准备] */
+void TraingModel::SetSportdata(SportData *data) {
+  if (data != nullptr && sportdata != nullptr) {
+    sportdata->sportType = data->sportType;
+    sportdata->sportId = data->sportId;
+    sportdata->start_date = data->start_date;
+    sportdata->start_time = data->start_time;
+    sportdata->end_time = data->end_time;
+    sportdata->goaldegree = data->goaldegree;
+    sportdata->duration = data->duration;
+    sportdata->distance = data->distance;
+    sportdata->avgheart = data->avgheart;
+    sportdata->steps = data->steps;
+    sportdata->intensity = data->intensity;
+    sportdata->calories = data->calories;
+    sportdata->apc = data->apc;
+    sportdata->fpc = data->fpc;
+    sportdata->spc = data->spc;
+    sportdata->std = data->std;
+    sportdata->cdc = data->cdc;
+    sportdata->starttime = data->starttime; //更新开始时间
+    printf_data(data);                      //打印该运动数据
+    IsSpecialSport(sportdata->sportId);     // 配置训练特殊性
+    // 更新sportId_,确保IsNeedGPS()能正确判断是否需要GPS
+    sportId_ = data->sportId;
+    sportType_ = data->sportType;
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetSportdata: 更新sportId_=%d, sportType_=%d", sportId_, (int)sportType_);
+  }
+}
  /*获取训练卡路里*/
  int TraingModel::GetCal() { return sportdata->calories; }
  /*获取训练目标*/
      uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
      return false;
    }
- 
-   if (isspecialsport_) {
-     // 保存心率表
-     if (!SaveHeartTable()) {
-       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartRateData is error!");
-       // uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
-       // return false;
-     }
+      // 保存心率表
+      if (!SaveHeartTable()) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartRateData is error!");
+        // uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+        // return false;
+      }
+    // 保存GPS数据
+    if (!SaveCanvasData()) {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveCanvasData is error!");
+      // return false; 
+    }
+    if (!SaveGPSData()) {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGPSData is error!");
+      // return false;
+    }
+   if (isspecialsport_ ) {
      // 保存速度表
      if (!SavePaceTable()) {
        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSpeedData is error!");
        // return false;
      }
-     // 保存GPS数据
-     if (!SaveCanvasData()) {
-       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveCanvasData is error!");
-       // return false; 
-     }
-     if (!SaveGPSData()) {
-       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGPSData is error!");
-       // return false;
-     }
    }
  
    // 如果所有操作成功,则恢复训练存储状态
index 5c10254..9d3fd46 100644 (file)
@@ -139,8 +139,10 @@ namespace OHOS
                 // 选择点击按键的历史数据
                 int arraynum = sportDataVector.size() - 1;
                 SportData sportData = sportDataVector[arraynum - index]; // 显示是倒序 id同理
-                NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGENDDATA);
+                // 先设置运动数据,确保sportId_被正确更新,然后再进入界面
+                // 这样OnStart()中调用IsNeedGPS()时能正确判断
                 TraingModel::GetInstance()->SetSportdata(&sportData);
+                NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGENDDATA);
                 return true;
             }
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the sportDataVector is error");