#113 暂时优化心率数据出数据慢
authorCaisking <3449750381@qq.com>
Thu, 25 Jul 2024 08:08:21 +0000 (16:08 +0800)
committerCaisking <3449750381@qq.com>
Thu, 25 Jul 2024 08:08:21 +0000 (16:08 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp

index c50131d..1599148 100644 (file)
@@ -297,6 +297,8 @@ namespace OHOS
         int CalculateAverageHeartRate(int newHeartRate);
         /*显示心率计算*/
         int CalculateFilteredHeartRate(int newHeartRate);
+        
+        int Averageheartrate(int newHeartRate);
 
         /*保存训练记录到json文件*/
         bool CheckDataJson();
index d04880b..06f1576 100644 (file)
@@ -306,11 +306,13 @@ namespace OHOS
     /*设置运动Id*/
     void TraingModel::SetSportEvent(UIResourceTextId id)
     {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SetSportType %d", sportId_);
         sportId_ = id;
     }
     /*获取运动Id*/
     UIResourceTextId TraingModel::GetSportEvent()
     {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " GetSportEvent %d", sportId_);
         return sportId_;
     }
     /*获取运动项目*/
@@ -401,8 +403,6 @@ namespace OHOS
     void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo)
     {
         // 不同的运动类型解析不同的数据
-        ExerciseClass type = GetSportId();
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " AnalysisData %d", type);
         // 通用数据
 
         sportdata->steps = cyweeInfo->steps;
@@ -417,16 +417,17 @@ namespace OHOS
         {
             sportdata->spc = sportdata->pc;
         }
+
+        sportdata->heart = cyweeInfo->hrs;
+
         if (cyweeInfo->hrs > 50)
         {
-            sportdata->heart = CalculateFilteredHeartRate(cyweeInfo->hrs);   // 处理显示心率
-            sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理正常的平均心率
-            SetIntensity(sportdata->heart);                                  // 设置训练强度
-        }
-        else
-        {
-            sportdata->heart = cyweeInfo->hrs;
+            // sportdata->heart = CalculateFilteredHeartRate(cyweeInfo->hrs);   // 处理显示心率
+            // sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理正常的平均心率
+            sportdata->avgheart = Averageheartrate(sportdata->heart);
+            SetIntensity(sportdata->heart); // 设置训练强度
         }
+
         // 达到最高心率进行心率提醒弹窗
         if (sportdata->heart >= ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX))
         {
@@ -596,6 +597,7 @@ namespace OHOS
             printf("SetTimestamp::time:%u  \r\n", time);
             sportdata->starttime = time;
             sportdata->sportType = sportType_; // 训练类型
+            sportdata->sportId = sportId_;
 
             if (sportTag_) // 有值才设置[训练目标]
             {
@@ -806,7 +808,6 @@ namespace OHOS
 
         return average;
     }
-
     // 显示心率
     int TraingModel::CalculateFilteredHeartRate(int newHeartRate)
     {
@@ -828,7 +829,16 @@ namespace OHOS
 
         return total / recentHeartRates.size(); // 返回计算后的平均值
     }
-
+    int TraingModel::Averageheartrate(int newHeartRate)
+    {
+        if (totalHeartRate == 0)
+        {
+            totalHeartRate = newHeartRate;
+        }
+        totalHeartRate = (totalHeartRate + newHeartRate) / 2;
+        
+        return totalHeartRate;
+    }
     // 设置训练目标类型以及训练目标
     void TraingModel::SetSportTag(ExerciseTag tagtpye, int tag)
     {