修复gps的开启冲突
authorCaisking <Casiking@zhihuishixun.com>
Fri, 10 Oct 2025 10:00:32 +0000 (18:00 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Fri, 10 Oct 2025 10:00:32 +0000 (18:00 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingNomalView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingNomalView.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/n9/nativeapp/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/traing/src/TraingNomalView.cpp

index 5a04ff9..878b80c 100644 (file)
@@ -389,7 +389,7 @@ public:
   bool SaveGPSData();
   std::string GetGPSDataPath(uint32_t timestamp);
   //运动心率、gps开启准备
-  void start_heart_gps();
+  void start_training_heart();
   //运动心率、gps关闭
   void stop_heart_gps();
   ///////////////////////////////////////////////
index 968d2f8..f1bd8c3 100644 (file)
 
 namespace OHOS {
 
-static const int initialY = 132 + CANVAS_SIZE;
+static const int initialY = 132 ;
 static const int lineHeight = 130;
 static const int iconHeight = 80;
 static const int verticalOffset = 2;
-static const int baseY = 214 + CANVAS_SIZE;
-static const int startY_Unit = 252 + CANVAS_SIZE;
-static const int startY_Value = 292 + CANVAS_SIZE;
+static const int baseY = 214 ;
+static const int startY_Unit = 252 ;
+static const int startY_Value = 292 ;
 static const int labelHeight = 40;
 static const int labelInterval = 130;
 
@@ -52,12 +52,27 @@ TraingEnddataView::~TraingEnddataView() {
 }
 
 TraingEnddataView *TraingEnddataView::GetInstance() {
-
   return g_pTraingEnddataView;
 }
 
 // 初始化图像
 void TraingEnddataView ::InitializeImageViews() {
+
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  initialY = 132 + height_canvas;
+  baseY = 214 + height_canvas;
+  startY_Unit = 252 + height_canvas;
+  startY_Value = 292 + height_canvas;
+  
   // 初始化主图标
   InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
                 WALKING_54_IMAGE);
@@ -104,9 +119,26 @@ void TraingEnddataView ::InitializeLabels() {
   /*title and sport*/
   InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST,
                 DEFAULT_VECTOR_FONT_FILENAME, 30);
-  InitRollLabel(labelsport, 147, 140 + CANVAS_SIZE, 240, 35, "label6",
+  // 如果是有gps轨迹才需要加CANVAS_SIZE
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+
+  initialY = 132 + height_canvas;
+  baseY = 214 + height_canvas;
+  startY_Unit = 252 + height_canvas;
+  startY_Value = 292 + height_canvas;
+  
+  InitRollLabel(labelsport, 147, 140 + height_canvas, 240, 35, "label6",
                 STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
-  InitLabel(labelduration, 146, 179 + CANVAS_SIZE, 240, 40, "label7",
+  InitLabel(labelduration, 146, 179 + height_canvas, 240, 40, "label7",
             "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
   // 初始化Label
   //时长
@@ -185,6 +217,20 @@ void TraingEnddataView::BonusdataView() {
   if (!TraingModel::GetInstance()->GetIsSpecial())
     return;
 
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = 400;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  baseY = baseY + height_canvas;
+  startY_Unit = startY_Unit + height_canvas;
+  startY_Value = startY_Value + height_canvas;
+  
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
@@ -267,6 +313,18 @@ void TraingEnddataView::BonusdataView() {
 // 配置退出相关位置
 void TraingEnddataView::ExitView() {
 
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  startY_Value = startY_Value + height_canvas;
+  
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
index 901ba7b..aad12df 100644 (file)
@@ -3084,24 +3084,13 @@ void TraingModel::SetGPSConnectState(bool state) {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== GPS连接状态设置完成 ===");
 }
 //运动心率、gps开启准备
-void TraingModel::start_heart_gps() {
+void TraingModel::start_training_heart() {
   if (gpsopen == false) {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始启动GPS定位服务...");
     //开启心率检测
 #ifdef SUPPORT_PPG_SERVICE
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "启动心率检测服务");
     ppg_hr_start();
-#endif
-    // 判断是否是需要GPS的运动
-    if (IsNeedGPS(GetSportEvent()) == false) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "不需要GPS运动,跳过启动流程");
-      return;
-    }
-    // 开启gps
-#if defined(SUPPORT_GNSS)
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "调用gnss_start()启动GPS服务");
-    gnss_start();
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gnss_start()调用完成");
 #endif
     gpsopen = true;
   }
index 1c4d8e4..01540a6 100644 (file)
@@ -20,7 +20,7 @@ namespace OHOS
     TraingNomalView::TraingNomalView()
     {
         /*判断是否需要GPS*/
-        TraingModel::GetInstance()->start_heart_gps();
+        TraingModel::GetInstance()->start_training_heart();
         g_pTraingNomalView = this;
     }
 
index 5a04ff9..878b80c 100644 (file)
@@ -389,7 +389,7 @@ public:
   bool SaveGPSData();
   std::string GetGPSDataPath(uint32_t timestamp);
   //运动心率、gps开启准备
-  void start_heart_gps();
+  void start_training_heart();
   //运动心率、gps关闭
   void stop_heart_gps();
   ///////////////////////////////////////////////
index 901ba7b..aad12df 100644 (file)
@@ -3084,24 +3084,13 @@ void TraingModel::SetGPSConnectState(bool state) {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== GPS连接状态设置完成 ===");
 }
 //运动心率、gps开启准备
-void TraingModel::start_heart_gps() {
+void TraingModel::start_training_heart() {
   if (gpsopen == false) {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始启动GPS定位服务...");
     //开启心率检测
 #ifdef SUPPORT_PPG_SERVICE
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "启动心率检测服务");
     ppg_hr_start();
-#endif
-    // 判断是否是需要GPS的运动
-    if (IsNeedGPS(GetSportEvent()) == false) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "不需要GPS运动,跳过启动流程");
-      return;
-    }
-    // 开启gps
-#if defined(SUPPORT_GNSS)
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "调用gnss_start()启动GPS服务");
-    gnss_start();
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gnss_start()调用完成");
 #endif
     gpsopen = true;
   }
index 1c4d8e4..01540a6 100644 (file)
@@ -20,7 +20,7 @@ namespace OHOS
     TraingNomalView::TraingNomalView()
     {
         /*判断是否需要GPS*/
-        TraingModel::GetInstance()->start_heart_gps();
+        TraingModel::GetInstance()->start_training_heart();
         g_pTraingNomalView = this;
     }
 
index 5a04ff9..878b80c 100644 (file)
@@ -389,7 +389,7 @@ public:
   bool SaveGPSData();
   std::string GetGPSDataPath(uint32_t timestamp);
   //运动心率、gps开启准备
-  void start_heart_gps();
+  void start_training_heart();
   //运动心率、gps关闭
   void stop_heart_gps();
   ///////////////////////////////////////////////
index 968d2f8..c59372c 100644 (file)
 
 namespace OHOS {
 
-static const int initialY = 132 + CANVAS_SIZE;
+static  int initialY = 132 ;
 static const int lineHeight = 130;
 static const int iconHeight = 80;
 static const int verticalOffset = 2;
-static const int baseY = 214 + CANVAS_SIZE;
-static const int startY_Unit = 252 + CANVAS_SIZE;
-static const int startY_Value = 292 + CANVAS_SIZE;
+static  int baseY = 214 ;
+static  int startY_Unit = 252 ;
+static  int startY_Value = 292 ;
 static const int labelHeight = 40;
 static const int labelInterval = 130;
 
@@ -52,12 +52,27 @@ TraingEnddataView::~TraingEnddataView() {
 }
 
 TraingEnddataView *TraingEnddataView::GetInstance() {
-
   return g_pTraingEnddataView;
 }
 
 // 初始化图像
 void TraingEnddataView ::InitializeImageViews() {
+
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  initialY = 132 + height_canvas;
+  baseY = 214 + height_canvas;
+  startY_Unit = 252 + height_canvas;
+  startY_Value = 292 + height_canvas;
+  
   // 初始化主图标
   InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
                 WALKING_54_IMAGE);
@@ -104,9 +119,26 @@ void TraingEnddataView ::InitializeLabels() {
   /*title and sport*/
   InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST,
                 DEFAULT_VECTOR_FONT_FILENAME, 30);
-  InitRollLabel(labelsport, 147, 140 + CANVAS_SIZE, 240, 35, "label6",
+  // 如果是有gps轨迹才需要加CANVAS_SIZE
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+
+  initialY = 132 + height_canvas;
+  baseY = 214 + height_canvas;
+  startY_Unit = 252 + height_canvas;
+  startY_Value = 292 + height_canvas;
+  
+  InitRollLabel(labelsport, 147, 140 + height_canvas, 240, 35, "label6",
                 STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
-  InitLabel(labelduration, 146, 179 + CANVAS_SIZE, 240, 40, "label7",
+  InitLabel(labelduration, 146, 179 + height_canvas, 240, 40, "label7",
             "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
   // 初始化Label
   //时长
@@ -185,6 +217,20 @@ void TraingEnddataView::BonusdataView() {
   if (!TraingModel::GetInstance()->GetIsSpecial())
     return;
 
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = 400;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  baseY = baseY + height_canvas;
+  startY_Unit = startY_Unit + height_canvas;
+  startY_Value = startY_Value + height_canvas;
+  
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
@@ -267,6 +313,18 @@ void TraingEnddataView::BonusdataView() {
 // 配置退出相关位置
 void TraingEnddataView::ExitView() {
 
+  std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
+  int height_canvas = 0;
+  if(canvasData.size() > 0)
+  {
+    height_canvas = CANVAS_SIZE;
+  }
+  else
+  {
+    height_canvas = 0;
+  }
+  startY_Value = startY_Value + height_canvas;
+  
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
index 901ba7b..aad12df 100644 (file)
@@ -3084,24 +3084,13 @@ void TraingModel::SetGPSConnectState(bool state) {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== GPS连接状态设置完成 ===");
 }
 //运动心率、gps开启准备
-void TraingModel::start_heart_gps() {
+void TraingModel::start_training_heart() {
   if (gpsopen == false) {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始启动GPS定位服务...");
     //开启心率检测
 #ifdef SUPPORT_PPG_SERVICE
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "启动心率检测服务");
     ppg_hr_start();
-#endif
-    // 判断是否是需要GPS的运动
-    if (IsNeedGPS(GetSportEvent()) == false) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "不需要GPS运动,跳过启动流程");
-      return;
-    }
-    // 开启gps
-#if defined(SUPPORT_GNSS)
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "调用gnss_start()启动GPS服务");
-    gnss_start();
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gnss_start()调用完成");
 #endif
     gpsopen = true;
   }
index 1c4d8e4..01540a6 100644 (file)
@@ -20,7 +20,7 @@ namespace OHOS
     TraingNomalView::TraingNomalView()
     {
         /*判断是否需要GPS*/
-        TraingModel::GetInstance()->start_heart_gps();
+        TraingModel::GetInstance()->start_training_heart();
         g_pTraingNomalView = this;
     }