// 获取检测字符串\r
// TODO: 适配多国语言\r
std::string HeartModel::GetCheckString() {\r
+ \r
std::string check_string = "检测结果未知";\r
-\r
- // 获取检测数据\r
- if (currentheart == 0) {\r
+ auto noDataString = []() -> std::string {\r
if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = "暂无检测数据";\r
- } else {\r
- check_string = "No detection data is available";\r
+ return "暂无检测数据";\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str());\r
- return check_string;\r
- }\r
+ return "No detection data is available";\r
+ };\r
\r
// 获取目前的时间戳\r
uint32_t currentTime;\r
- if (uapi_get_timestampe_ss(¤tTime) != ERRCODE_SUCC) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = "获取当前时间失败";\r
- } else {\r
- check_string = "Get time failed";\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "获取当前时间失败");\r
- return check_string;\r
+ if (uapi_get_timestampe_ms(¤tTime) != ERRCODE_SUCC) {\r
+ return noDataString();\r
}\r
\r
- // 检查时间戳是否有效\r
- if (timestamp_ms == 0) {\r
- if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
- check_string = std::to_string(currentheart) + " " + "时间无效,无法检测";\r
- } else {\r
- check_string =\r
- std::to_string(currentheart) + " " + "Invalid time, cannot detect";\r
+ // 获取检测数据\r
+ if (currentheart == 0 || timestamp_ms == 0 || currentTime == 0) {\r
+ // 用户不需要知道时间戳失败:优先展示上一次检测结果;没有才展示“暂无检测数据”\r
+ if (!last_check_string_.empty()) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+ "检测数据不可用(heart=%d,time=%d,ts=%d),回退显示上一次结果:%s",\r
+ currentheart, currentTime, timestamp_ms,\r
+ last_check_string_.c_str());\r
+ return last_check_string_;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s",\r
- check_string.c_str());\r
+ check_string = noDataString();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str());\r
return check_string;\r
}\r
\r
}\r
\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测结果:%s", check_string.c_str());\r
+ last_check_string_ = check_string;\r
return check_string; // Return the final string\r
}\r
\r