修复训练时长数据处理bug 72/1
authorCaisking <3449750381@qq.com>
Tue, 23 Apr 2024 09:48:32 +0000 (17:48 +0800)
committerCaisking <3449750381@qq.com>
Tue, 23 Apr 2024 09:48:32 +0000 (17:48 +0800)
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp

index 76f8d92..79d6c13 100644 (file)
@@ -45,10 +45,10 @@ namespace OHOS
         {VIEW_BRIGHTNESSLEVEL, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, "亮度调节", nullptr},
         {VIEW_SAVEELE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_SAVEELE_IMAGE, "省电模式", nullptr},
         {VIEW_MESSAGE, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_MESSAGE_IMAGE, "消息通知", nullptr},
-        {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
 #ifdef SUPPORT_ALIPAY_SEC
         {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, "支付宝", nullptr},
 #endif
+        {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
 #if 0
         {VIEW_LANGUAGE_SWITCH, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "语言切换", nullptr},
         {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, "体温", nullptr},
index 80810d0..cc6ec2e 100644 (file)
@@ -65,7 +65,12 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
             (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
         {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+            NativeAbility::GetInstance().Back();
+        }
+        // 向下回到主界面
+        if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
+        {
+            NativeAbility::GetInstance().EnterSlice(VIEW_MAIN);
         }
         return true;
     }
index 32ef59e..696b614 100644 (file)
@@ -166,7 +166,7 @@ namespace OHOS
     {
         uint64 starttime;         // 开始时间时间戳
         uint64 endtime;           // 结束时间时间戳
-        uint64 duration;          // 训练时长
+        int duration;             // 训练时长
         int goaldegree;           // 目标完成度
         int calories;             // 训练卡路里
         int steps;                // 训练步数
@@ -261,7 +261,7 @@ namespace OHOS
         /*解析时间戳*/
         std::string AnalysisTimestamp(uint64_t timestamp);
         /*获取运动总时长*/
-        uint32_t GetTrainingTime();
+        std::string GetTrainingTime();
         /*设置训练目标类型以及训练目标*/
         void SetSportTag(ExerciseTag tagtpye, int tag);
         /*获取训练目标*/
index b7f7151..3826bb4 100644 (file)
@@ -128,7 +128,7 @@ namespace OHOS
         scrollView_->Add(labelsteps);
 
         // 初始化button
-        TraingModel::GetInstance()->InitButtonExt(buttonexit, 42, 1319 - 338, 380, 100, BUTTONBACK, STR_OFF, 30);
+        TraingModel::GetInstance()->InitButtonExt(buttonexit, 42, 1111, 380, 100, BUTTONBACK, STR_OFF, 30);
         buttonexit->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingEnddataPresenter::GetInstance()));
         scrollView_->Add(buttonexit);
     }
@@ -303,8 +303,8 @@ namespace OHOS
             labeltag->SetText(tagStr.c_str());
         }
         // 运动时长
-        uint64_t time = TraingModel::GetInstance()->GetTrainingTime();
-        std::string timeStr = TraingModel::GetInstance()->AnalysisTimestamp(time);
+        PRINT("duration:%d\r\n", enddata->duration);
+        std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
         labeltime->SetText(timeStr.c_str());
 
         // 运动距离
@@ -316,6 +316,10 @@ namespace OHOS
         std::string heartStr = std::to_string(enddata->avgheart);
         labelheart->SetText(heartStr.c_str());
 
+        // 步数
+        std::string stepStr = std::to_string(enddata->steps);
+        labelsteps->SetText(stepStr.c_str());
+
         // 训练强度
         UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
         labelstrong->SetTextId(intensityid);
index 2561688..ddf76ba 100644 (file)
@@ -505,7 +505,7 @@ namespace OHOS
             sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理平均心率
         }
         // sportdata->duration = cyweeInfo->duration;
-        PRINT("normal sportdata->calories[%d],sportdata->duration[%d],sportdata->heart[%d] \r\n", sportdata->calories, sportdata->duration, sportdata->heart);
+        PRINT("normal sportdata->calories[%d],sportdata->heart[%d] \r\n", sportdata->calories, sportdata->heart);
         switch (type)
         {
         case ExerciseClass::OUTDOOR:
@@ -637,9 +637,17 @@ namespace OHOS
         }
     }
     // 获取训练时长时间戳
-    uint32_t TraingModel::GetTrainingTime()
+    std::string TraingModel::GetTrainingTime()
     {
-        return (sportdata->endtime - sportdata->starttime);
+        int hour = sportdata->duration / NUM_TIME_HOUR;
+        int min = (sportdata->duration % NUM_TIME_HOUR) / NUM_TIME_MIN;
+        int sec = (sportdata->duration % NUM_TIME_HOUR) % NUM_TIME_MIN;
+
+        std::ostringstream oss;
+        oss << std::setfill('0') << std::setw(2) << hour << ":" << std::setw(2) << min << ":" << std::setw(2) << sec;
+
+        std::string triningtime = oss.str();
+        return triningtime;
     }
     /*解析时间戳 返回例如:13:00:22*/
     std::string TraingModel::AnalysisTimestamp(uint64_t timestamp)
@@ -736,7 +744,6 @@ namespace OHOS
             break;
         }
     }
-    /*获取对应的训练目标的值*/
     int TraingModel::GetSportTagData()
     {
         if (sportTag_)
@@ -745,7 +752,7 @@ namespace OHOS
             switch (sportdata->sportTagType)
             {
             case ExerciseTag::Duration:
-                return sportdata->duration;
+                return int(sportdata->duration / 60); // 时间是秒需要转换为目标的分钟
                 break;
             case ExerciseTag::Calories:
                 return sportdata->calories;
@@ -761,6 +768,7 @@ namespace OHOS
             }
         }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Not set Sport_Tag!");
+        return 0; // 添加默认返回值
     }
     /*获取训练目标完成百分比*/
     int TraingModel::GetGoaldegree()
@@ -805,7 +813,7 @@ namespace OHOS
         data.tgt = static_cast<uint32_t>(sportdata->sportTagType);
         data.tg = static_cast<uint32_t>(sportdata->tag);
         data.pg = static_cast<uint32_t>(sportdata->goaldegree);
-        data.du = static_cast<uint32_t>(sportdata->duration);
+        data.du = static_cast<uint32_t>((sportdata->duration) * 60);
         data.ca = static_cast<uint32_t>(sportdata->calories);
         data.di = static_cast<uint32_t>(sportdata->distance);
         data.hr = static_cast<uint32_t>(sportdata->avgheart);
@@ -855,6 +863,11 @@ namespace OHOS
         {
             g_motionTimes = 0;
         }
+        if (g_motionTimes != 0)
+        {
+            sportdata->duration = g_motionTimes; // 训练时长
+            PRINT("duration:[%d] g_motionTimes[%d]\r\n", sportdata->duration, g_motionTimes);
+        }
 
         int hour = g_motionTimes / NUM_TIME_HOUR;
         int min = (g_motionTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;
index c656205..e4f3047 100644 (file)
@@ -21,6 +21,7 @@ extern "C" void custom_VibratorFunc(OHOS::VibratorType vibratorType);
 #define MAXSPORTID 176\r
 \r
 #define DEFAULT_DASH "--"\r
+#define DATATEST 0\r
 \r
 extern "C"\r
 {\r
@@ -183,7 +184,7 @@ namespace OHOS
         {\r
             distanceStr = DEFAULT_DASH;\r
         }\r
-        std::string durationStr = std::to_string(sportdata->duration);\r
+        //std::string durationStr = std::to_string(sportdata->duration);\r
         std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
         std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
         std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH;\r
@@ -251,14 +252,19 @@ namespace OHOS
         {\r
             TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
             ControlSensor(ExerciseState::End);\r
+#ifdef DATATEST\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+#else\r
             if (TraingModel::GetInstance()->GetMomentum())\r
             {\r
                 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
             }\r
             else\r
             {\r
-                NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);\r
+                // 训练量不足进入训练记录界面\r
+                NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
             }\r
+#endif\r
         }\r
         // 返回按键\r
         if (strcmp(view.GetViewId(), BUTTONBACK) == 0)\r
@@ -325,7 +331,8 @@ namespace OHOS
             }\r
             else\r
             {\r
-                NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);\r
+                // 训练量不足进入训练记录界面\r
+                NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
             }\r
             return true;\r
         }\r