增加佩戴监控和有效数检测
authorCaisking <3449750381@qq.com>
Mon, 18 Mar 2024 11:41:13 +0000 (19:41 +0800)
committerCaisking <3449750381@qq.com>
Mon, 18 Mar 2024 11:41:13 +0000 (19:41 +0800)
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartPresenter.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp

index 41965af..254aed5 100644 (file)
@@ -25,7 +25,7 @@ namespace OHOS
         {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr},
         {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
         {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, "天气", nullptr},
-        // {VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr},
+        {VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr},
         {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, "录音", nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
         {VIEW_DIALUPDATE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, "表盘切换", nullptr},
index 810752d..491264c 100644 (file)
@@ -483,6 +483,7 @@ namespace OHOS
         valid_counter_ = 0;\r
         wear_counter_ = 0;\r
         SetCheckStatus(false);\r
+        SetWearStatus(true);\r
     }\r
 \r
     void HeartModel::SetWearStatus(uint8_t wear)\r
@@ -490,19 +491,18 @@ namespace OHOS
         // 设置佩戴状态\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weartest::%d", wear);\r
         wear_ = wear_;\r
-\r
-        // 佩戴信息为错误\r
         if (wear_ != 1)\r
         {\r
-            // 佩戴错误计时器计数\r
-            wear_counter_++;\r
-            // 计数达到10次,停止检测\r
-            if (wear_counter_ >= 10)\r
-            {\r
-                wearStatus = false;\r
-            }\r
+            wear_counter_++; // 佩戴错误计时器计数\r
+        }\r
+        if (wear_counter_ >= 10)\r
+        {\r
+            wearStatus = false; // 计数达到10次,停止检测\r
+        }\r
+        else\r
+        {\r
+            wearStatus = true;\r
         }\r
-        wearStatus = true;\r
     }\r
 \r
     bool HeartModel::GetWearStatus()\r
@@ -597,11 +597,14 @@ namespace OHOS
         {\r
             // 结束本次测试,将最后一次有效数作为本次测量结果\r
             Heart_Stop();\r
-            HeartRateData *data;\r
+            /* -------------------------------------------------------------------------- */\r
+            HeartRateData *data = new HeartRateData;\r
             data->Heart = heart;\r
             data->timestamp = HeartPresenter::GetInstance()->GetCurrentTime();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %lld", heart, data->timestamp);\r
             SetCheckTime(data->timestamp);\r
             HeartService::GetInstance()->UpdateHeartRateData(*data);\r
+            /* -------------------------------------------------------------------------- */\r
         }\r
     }\r
 \r
index 4aa3216..727d6ef 100644 (file)
@@ -145,6 +145,22 @@ namespace OHOS
         }
         return false;
     }
+    // 增加按键事件
+    bool HeartPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
+    {
+#if HEARTKEYABLE
+        WEARABLE_LOGD("", "into the view is: %s\n", typeid(view).name());
+        uint16 keyID = event.GetKeyId();
+        WEARABLE_LOGD("", "into key! keyID %u\n", keyID);
+        // 如果是power键就返回上一级
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+        {
+            // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+        }
+#endif
+        return true;
+    }
 
     bool HeartPresenter::OnClick(UIView &view, const ClickEvent &event)
     {
@@ -164,6 +180,7 @@ namespace OHOS
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HEARTCHECKVIEW->HEARTVIEW");
             HeartView::GetInstance()->ChangeView(HEARTCHECKVIEW, HEARTVIEW);
+            HeartView::GetInstance()->UpHeartText(); // 更新主界面数据
             HeartModel::GetInstance()->SetHeartCheckViewStatus(false);
             HeartModel::GetInstance()->Heart_Stop();
         }
@@ -172,6 +189,8 @@ namespace OHOS
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HEARTRESULT->HEARTCHECKVIEW");
             HeartView::GetInstance()->ChangeView(HEARTRESULT, HEARTCHECKVIEW);
+            HeartModel::GetInstance()->SetHeartResultViewStatus(false);
+            HeartModel::GetInstance()->SetHeartCheckViewStatus(true);
             HeartCheckView::GetInstance()->GetImageAnimator()->Start(); // 播放检测界面动画
             HeartModel::GetInstance()->Heart_Start();                   // 开始检测
             return true;
@@ -181,29 +200,14 @@ namespace OHOS
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HEARTRESULT->HEARTVIEW");
             HeartView::GetInstance()->ChangeView(HEARTRESULT, HEARTVIEW);
+            HeartModel::GetInstance()->SetHeartResultViewStatus(false);
+            HeartView::GetInstance()->UpHeartText(); // 更新主界面数据
             HeartModel::GetInstance()->Heart_Stop();
             return true;
         }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartPresenter::OnClick");
         return false;
     }
-
-    // 增加按键事件
-    bool HeartPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
-    {
-#if HEARTKEYABLE
-        WEARABLE_LOGD("", "into the view is: %s\n", typeid(view).name());
-        uint16 keyID = event.GetKeyId();
-        WEARABLE_LOGD("", "into key! keyID %u\n", keyID);
-        // 如果是power键就返回上一级
-        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
-        {
-            // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-        }
-#endif
-        return true;
-    }
     void HeartPresenter::ProgressNotify(void)
     {
         // 当检测状态为开始检测,开始检测
@@ -212,6 +216,7 @@ namespace OHOS
             HeartCheckView::GetInstance()->UpShowHeartText(); // 更新检测界面
             if (startheart == true)
             {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : true");
                 uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;
                 send_ppg_cmd_msg(md);
                 startheart = false;
@@ -221,25 +226,27 @@ namespace OHOS
         // 当检测状态为结束检测,结束检测
         if (HeartModel::GetInstance()->GetCheckStatus() == false)
         {
-            if (HeartCheckView::GetInstance()->GetImageAnimator()->GetState() == true)
-            {
-                HeartCheckView::GetInstance()->GetImageAnimator()->Stop();
-            }
             if (startheart == false)
             {
+                HeartCheckView::GetInstance()->GetImageAnimator()->Stop();
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : false");
                 uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
                 send_ppg_cmd_msg(md);
                 startheart = true;
             }
         }
-
         // 监测佩戴状态
         if (HeartModel::GetInstance()->GetWearStatus() == false)
         {
-            HeartModel::GetInstance()->Heart_Stop();
-            if (HeartCheckView::GetInstance()->GetImageAnimator()->GetState() == true)
+            if (HeartModel::GetInstance()->GetHeartCheckViewStatus() == true)
             {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetWearStatus : false");
                 HeartCheckView::GetInstance()->GetImageAnimator()->Stop();
+                // 跳转到异常检测界面
+                HeartView::GetInstance()->ChangeView(HEARTCHECKVIEW, HEARTRESULT);
+                HeartModel::GetInstance()->SetHeartCheckViewStatus(false);
+                HeartModel::GetInstance()->SetHeartResultViewStatus(true);
+                HeartModel::GetInstance()->Heart_Stop();
             }
         }
     }
@@ -254,9 +261,8 @@ namespace OHOS
             {
                 HeartView::GetInstance()->ChangeView(HEARTBANDVIEW, HEARTCHECKVIEW);
                 HeartModel::GetInstance()->SetHeartBandoffViewStatus(false);
-                // 设置检测界面状态
+                // 检测界面状态
                 HeartModel::GetInstance()->SetHeartCheckViewStatus(true);
-                // 播放检测界面动画
                 HeartCheckView::GetInstance()->GetImageAnimator()->Start();
                 HeartModel::GetInstance()->Heart_Start(); // 开始检测
             }
@@ -270,7 +276,6 @@ namespace OHOS
                 // 测试失败
                 if (HeartModel::GetInstance()->GetShowHeartdata() == 0)
                 {
-
                     HeartView::GetInstance()->ChangeView(HEARTCHECKVIEW, HEARTRESULT);
                     HeartModel::GetInstance()->SetHeartResultViewStatus(true);
                 }
index 5f33e65..a813f3c 100755 (executable)
@@ -276,7 +276,6 @@ void MsgCenterNotifyWearStateProc(const Topic topic, Request* req)
     if ( topic == TOPIC_EVENT_WEARSTATE_UPDATE)
     {
         int32_t wear = *((int32_t*)(req->data)); // 进行类型转换
-
         BloodOxygenModel::GetInstance()->SetWearStatus(wear);
         HeartModel::GetInstance()->SetWearStatus(wear);
     }