运动开始前进行GPS检测
authorCaisking <Casiking@zhihuishixun.com>
Tue, 1 Jul 2025 09:37:06 +0000 (17:37 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Tue, 1 Jul 2025 09:37:06 +0000 (17:37 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp

index cc6134c..b1b0b90 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "Presenter.h"
 #include "TraingNomalView.h"
-
+#include "ModelListenerSample.h"
 namespace OHOS
 {
     class TraingNomalView;
@@ -12,6 +12,7 @@ namespace OHOS
     class TraingNomalPresenter : public Presenter<TraingNomalView>,
                                  public UIView::OnClickListener,
                                  public RootView::OnKeyActListener,
+                                 public ModelListenerSample, 
                                  public UIView::OnDragListener
     {
     public:
@@ -23,6 +24,7 @@ namespace OHOS
         void OnResume() override;
         void OnStop() override;
         void NavigateBack();
+        void Notify() override;
 
         static TraingNomalPresenter *GetInstance();
 
index ce3aab9..1853232 100644 (file)
@@ -59,6 +59,7 @@ namespace OHOS
         void PreLoad(void);
         void UpdateTraingTag(); // 更新训练目标
 
+        bool updateview();
     private:
         UIView::OnDragListener *draglistener{nullptr};
         TraingNomalView(TraingNomalView &&) = delete;
@@ -75,6 +76,7 @@ namespace OHOS
         UILabel *heartrate_label_ = nullptr;
 
         bool viewiInitStatus{false};
+        bool updat_view_status{false};
     };
 } // namespace OHOS
 #endif // TraingNomal_PRESENTER_H
index 4a6740d..09c3cbf 100644 (file)
@@ -43,13 +43,13 @@ namespace OHOS
 \r
     void TraingNomalPresenter::OnStart()\r
     {\r
-\r
+        TraingModel::GetInstance()->Traing_StartTimer(1000);\r
         Presenter<TraingNomalView>::OnStart();\r
     }\r
 \r
     void TraingNomalPresenter::OnPause(void)\r
     {\r
-\r
+        TraingModel::GetInstance()->Traing_StopTimer();\r
         Presenter<TraingNomalView>::OnPause();\r
     }\r
 \r
@@ -128,4 +128,11 @@ namespace OHOS
         }\r
         return true;\r
     }\r
+\r
+    void TraingNomalPresenter::Notify()\r
+    {\r
+        //获取gps定位状态\r
+        TraingNomalView::GetInstance()->updateview();\r
+        \r
+    }\r
 }\r
index 1f20d6c..5df8c81 100644 (file)
@@ -19,18 +19,19 @@ namespace OHOS
 
     TraingNomalView::TraingNomalView()
     {
+        TraingModel::GetInstance()->start_heart_gps();
         g_pTraingNomalView = this;
     }
 
     TraingNomalView::~TraingNomalView()
     {
         DeInit();
+        // TraingModel::GetInstance()->stop_heart_gps();
         g_pTraingNomalView = nullptr;
     }
 
     TraingNomalView *TraingNomalView::GetInstance()
     {
-
         return g_pTraingNomalView;
     }
 
@@ -67,7 +68,7 @@ namespace OHOS
         buttonGo_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingNomalPresenter::GetInstance()));
         buttonSet_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingNomalPresenter::GetInstance()));
         container_->Add(buttonGo_);
-        container_->Add(buttonSet_);
+        container_->Add(buttonSet_); 
 #if defined(BOARD_W9) || defined(BOARD_N9)
         InitUILabel(heartrate_label_, -32, 230, 200, 60, "heartrate_label_", "--", DEFAULT_VECTOR_FONT_FILENAME, 30);
         container_->Add(heartrate_label_);
@@ -76,6 +77,7 @@ namespace OHOS
         
         // 获取gps状态
         bool gps_status = TraingModel::GetInstance()->GetGPSConnectState();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps状态: %d", gps_status);
         if (gps_status)
         {
             //连接状态
@@ -212,4 +214,42 @@ namespace OHOS
         RootView::GetInstance()->RemoveAll();
         return;
     }
+      //更新gps状态
+    bool TraingNomalView::updateview()
+    {
+        if(gps_image_ == nullptr)
+        {
+            return false;
+        }
+        // 更新GPS状态显示
+        bool gps_status = TraingModel::GetInstance()->GetGPSConnectState();
+        if(gps_status == updat_view_status)
+        {
+            return false;
+        }
+        updat_view_status = gps_status;
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gps状态: %d", updat_view_status);
+        ImageInfo *image;
+        if (updat_view_status)
+        {
+            // 连接状态 - 加载并设置GPS连接图标
+            ImageCacheManager::GetInstance().UnloadSingleRes(GPS_2_IMAGE);
+            image = ImageCacheManager::GetInstance().LoadSingleRes(GPS_1_IMAGE, false);
+            if (image == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "加载GPS连接图标失败: %s", GPS_1_IMAGE);
+                return false;
+            }
+        }
+        else
+        {
+            ImageCacheManager::GetInstance().UnloadSingleRes(GPS_1_IMAGE);
+            image = ImageCacheManager::GetInstance().LoadSingleRes(GPS_2_IMAGE, false);
+            if (image == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "加载GPS断开图标失败: %s", GPS_2_IMAGE);
+                return false;
+            }
+        }
+        gps_image_->SetSrc(image);
+        return true; 
+    }
 }