From d0ea7bf05bc814e8a7329234287d11b1a6e4f682 Mon Sep 17 00:00:00 2001 From: Caisking Date: Wed, 18 Mar 2026 19:04:35 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E7=8E=87=E6=A3=80?= =?utf8?q?=E6=B5=8B=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/heartrate/include/HeartModel.h | 1 + .../nativeui/heartrate/src/HeartModel.cpp | 45 ++++++++----------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/include/HeartModel.h b/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/include/HeartModel.h index 37f1d266c..e5393ee87 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/include/HeartModel.h +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/include/HeartModel.h @@ -199,6 +199,7 @@ private: HeartCheck checkstate = HeartCheck::RESTSTSTE; // 目前检测状态 uint16_t dynamic_heartrate[5]; //动态心率配置项 + std::string last_check_string_; // 上一次检测结果 uint8_t heartRemindState{0}; uint16_t thresholdValue{160}; diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/src/HeartModel.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/src/HeartModel.cpp index fb3da8ed8..564bab162 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/src/HeartModel.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/heartrate/src/HeartModel.cpp @@ -870,41 +870,33 @@ uint16_t *HeartModel::GetArrayData() { return dynamic_heartrate; } // 获取检测字符串 // TODO: 适配多国语言 std::string HeartModel::GetCheckString() { + std::string check_string = "检测结果未知"; - - // 获取检测数据 - if (currentheart == 0) { + auto noDataString = []() -> std::string { if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) { - check_string = "暂无检测数据"; - } else { - check_string = "No detection data is available"; + return "暂无检测数据"; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str()); - return check_string; - } + return "No detection data is available"; + }; // 获取目前的时间戳 uint32_t currentTime; - if (uapi_get_timestampe_ss(¤tTime) != ERRCODE_SUCC) { - if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) { - check_string = "获取当前时间失败"; - } else { - check_string = "Get time failed"; - } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "获取当前时间失败"); - return check_string; + if (uapi_get_timestampe_ms(¤tTime) != ERRCODE_SUCC) { + return noDataString(); } - // 检查时间戳是否有效 - if (timestamp_ms == 0) { - if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) { - check_string = std::to_string(currentheart) + " " + "时间无效,无法检测"; - } else { - check_string = - std::to_string(currentheart) + " " + "Invalid time, cannot detect"; + // 获取检测数据 + if (currentheart == 0 || timestamp_ms == 0 || currentTime == 0) { + // 用户不需要知道时间戳失败:优先展示上一次检测结果;没有才展示“暂无检测数据” + if (!last_check_string_.empty()) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "检测数据不可用(heart=%d,time=%d,ts=%d),回退显示上一次结果:%s", + currentheart, currentTime, timestamp_ms, + last_check_string_.c_str()); + return last_check_string_; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s", - check_string.c_str()); + check_string = noDataString(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str()); return check_string; } @@ -944,6 +936,7 @@ std::string HeartModel::GetCheckString() { } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测结果:%s", check_string.c_str()); + last_check_string_ = check_string; return check_string; // Return the final string } -- 2.17.1