From 06f88dcaa5fe31ae4ebc9ae951339390ad385b50 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 7 Jun 2024 19:47:39 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E8=AE=AD=E7=BB=83=E8=AE=B0?= =?utf8?q?=E5=BD=95=EF=BC=9B=E8=A7=A3=E5=86=B3=E8=AE=AD=E7=BB=83=E7=BB=93?= =?utf8?q?=E6=9D=9F=E6=AD=BB=E6=9C=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/traing/include/TraingModel.h | 14 ++++----- .../nativeui/traing/src/TraingModel.cpp | 30 +++++++------------ .../traingrecord/include/TraingRecordModel.h | 11 +++++-- .../traingrecord/src/TraingRecordModel.cpp | 27 ++++++++--------- 4 files changed, 39 insertions(+), 43 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h index ab8a35832..ebe56f083 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -88,15 +88,15 @@ extern "C" uint32_t cir; // 最高海拔高度 uint32_t alt; - //平均配速 + // 平均配速 uint32_t apc; - //最快配速 + // 最快配速 uint32_t fpc; - //最慢配速 + // 最慢配速 uint32_t spc; - //步幅 + // 步幅 uint32_t std; - //步频 + // 步频 uint32_t cdc; }; Trainingdata *read_Trainingdata_data(char *timedata, uint16_t offset); @@ -176,7 +176,7 @@ namespace OHOS int heart; // 运动心率 int avgheart; // 训练平均心率 int tag; // 训练目标 - int pc; //训练配速 + int pc; // 训练配速 std::string start_date; // 训练开始日期 std::string start_time; // 训练开始时间 std::string end_time; // 训练结束时间 @@ -286,7 +286,7 @@ namespace OHOS /*保存训练记录到json文件*/ bool CheckDataJson(); bool SaveDataToJson(SportData *data); - SportData *LoadDateFeomJson(); + std::vector LoadDataFormJson(); private: TraingModel(const TraingModel &) = delete; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index f76687a79..e2ced55e9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -41,6 +41,7 @@ #include #include #include "samgr_lite.h" +#include #define MAX_FILE_PATH_LENGTH 128 #define TRAINING_DATA_DIRECTORY "user/userdata/sport/" @@ -60,6 +61,7 @@ #define HIGH_INTENSITY_LOWER_THRESHOLD 70 #define HIGH_INTENSITY_UPPER_THRESHOLD 79 +extern "C" errcode_t uapi_get_timestampe_ms(uint32_t *tm); extern "C" void custom_VibratorFunc(OHOS::VibratorType vibratorType); #ifdef __cplusplus @@ -280,19 +282,17 @@ namespace OHOS if (state != ExerciseState::General) { /*运动开始并且是app发起的运动*/ - if (Openingway == true && state != ExerciseState::End) + if (Openingway == true) { sendtraningstatedata(static_cast(state), sportdata->duration); } else { -#if 0 /*手表发起并且是结束状态*/ if (state == ExerciseState::End) { sendtraningstateend(); } -#endif } } sportState_ = state; @@ -468,16 +468,6 @@ namespace OHOS Startstate = false; Endstate = true; - /*保存数据之后再发送结束消息*/ - if (Openingway == true) - { - sendtraningstatedata(static_cast(ExerciseState::End), sportdata->duration); - } - else - { - sendtraningstateend(); - } - printf("结束运动\r\n"); } } @@ -704,7 +694,7 @@ namespace OHOS } /*json读取测试*/ #if READTEST - SportData *sportDataArray = LoadDateFeomJson(); + SportData *sportDataArray = LoadDataFormJson(); if (sportDataArray != nullptr) { int dataCount = 0; @@ -1202,13 +1192,13 @@ namespace OHOS return true; } /* 加载训练数据函数 */ - SportData *TraingModel::LoadDateFeomJson() + std::vector TraingModel::LoadDataFormJson() { std::ifstream file(TRAINING_RECORD_FILE); if (!file.is_open()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file"); - return nullptr; + return std::vector(); } std::string jsonData((std::istreambuf_iterator(file)), std::istreambuf_iterator()); @@ -1217,8 +1207,8 @@ namespace OHOS cJSON *root = cJSON_Parse(jsonData.c_str()); cJSON *dataArray = cJSON_GetObjectItem(root, "data"); - int dataCount = cJSON_GetArraySize(dataArray); // 获取数组大小 - SportData *sportDataArray = new SportData[dataCount]; + int dataCount = cJSON_GetArraySize(dataArray); + std::vector sportDataVector; for (int i = 0; i < dataCount; i++) { @@ -1236,10 +1226,10 @@ namespace OHOS sportData.steps = cJSON_GetObjectItem(item, "steps")->valueint; sportData.intensity = cJSON_GetObjectItem(item, "intensity")->valueint; - sportDataArray[i] = sportData; + sportDataVector.push_back(sportData); } cJSON_Delete(root); - return sportDataArray; + return sportDataVector; } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h index d9268502b..617789ba3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-05-20 19:40:41 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-07 18:46:11 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h + */ #ifndef TraingRecord_MODEL_H #define TraingRecord_MODEL_H @@ -21,8 +27,8 @@ namespace OHOS static TraingRecordModel &GetInstance(void); void InitTraingRecordListItem(); const TraingRecordItem *GetTraingRecordlistItems() const; - uint8_t GetTraingRecordListNum() const; - //设置标志位 + uint8_t GetTraingRecordListNum(); + // 设置标志位 bool GetJsonStatus(); private: @@ -31,6 +37,7 @@ namespace OHOS TraingRecordModel &operator=(const TraingRecordModel &); virtual ~TraingRecordModel(); static const uint16_t TraingRecordListMaxNum = 10; + uint8_t ArrayNum; TraingRecordItem TraingRecords[TraingRecordListMaxNum] = {0, nullptr, nullptr, nullptr}; // std::map TraingRecordIdToViewId; bool jsonStatus{false}; // json文件存在标志位 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp index fe082a913..f4cd05037 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp @@ -1,10 +1,8 @@ /*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-26 18:34:15 + * @Date: 2024-05-20 19:40:41 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 18:36:25 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_Record/src/TraingRecordModel.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + * @LastEditTime: 2024-06-07 17:41:18 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp */ #include "traingrecord/include/TraingRecordModel.h" @@ -18,6 +16,7 @@ #include "components/ui_label_ext.h" #include "language/font/ui_resource_string.h" #include "traing/include/TraingModel.h" +#include namespace OHOS { @@ -32,7 +31,7 @@ namespace OHOS return instance; } - //设置标志位 + // 设置标志位 bool TraingRecordModel::GetJsonStatus() { jsonStatus = TraingModel::GetInstance()->CheckDataJson(); @@ -42,19 +41,19 @@ namespace OHOS void TraingRecordModel::InitTraingRecordListItem() { // 1.读取json数据 - SportData *sportDataArray = TraingModel::GetInstance()->LoadDateFeomJson(); - if (sportDataArray != nullptr) + std::vector sportDataVector = TraingModel::GetInstance()->LoadDataFormJson(); + if (!sportDataVector.empty()) { - int dataCount = 0; - for (int i = 0; i < TraingRecordListMaxNum; i++) // 最多只有10条数据 + ArrayNum = sportDataVector.size(); + for (int i = 0; i < ArrayNum && i < TraingRecordListMaxNum; i++) // 最多只有10条数据 { - SportData sportData = sportDataArray[i]; + SportData sportData = sportDataVector[i]; // 2.获取训练类 std::string imageicon = TraingModel::GetInstance()->GetSportIcon(sportData.sportType); // 3.获取日期 // 4.获取时间 TraingRecords[i] = {i, imageicon.c_str(), sportData.start_date, sportData.start_time}; -#if 0 +#if 1 // 使用 printf 输出每条训练记录的信息 [测试] printf("Training Record %d:\n", i + 1); printf("Sport Type: %s\n", imageicon.c_str()); @@ -69,8 +68,8 @@ namespace OHOS { return TraingRecords; } - uint8_t TraingRecordModel::GetTraingRecordListNum() const + uint8_t TraingRecordModel::GetTraingRecordListNum() { - return TraingRecordListMaxNum; + return ArrayNum; } } \ No newline at end of file -- 2.17.1