${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/CheckInvalidView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/CheckInvalidPresenter.cpp
+ #HeartCheck
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartResultView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartResultPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartDetectionView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartDetectionPresenter.cpp
+
#BloodCheck
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodResultView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodResultPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartRateView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartModel.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartBandoffView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartCheckView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartResultView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmClockModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/MainAlarmView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmConfigView.cpp
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 10:38:26
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h
+ */
#ifndef BLOOD_OXYGEN_MODEL_H
#define BLOOD_OXYGEN_MODEL_H
uint32_t GetCheckTime();
void SetCheckTime(uint32_t time);
-
void SetWearStatus(int32_t wear);
- bool GetWearStatus();
-
void SetResult(BloodResult result);
BloodResult GetResult();
void ReInit();
private:
- bool OxygenView;
- bool BandoffView;
- bool CheckView;
- bool ResultView;
- bool CheckStatus;
- bool wearStatus;
+
uint16_t displayspo2;
uint16_t currentspo2;
uint32_t timestamp_ms;
}
}
- bool BloodOxygenModel::GetWearStatus()
- {
- return wearStatus;
- }
-
uint16_t BloodOxygenModel::GetSPO2data()
{
return currentspo2;
// 开始检测
void BloodOxygenModel::Blood_Start()
{
- currentspo2 = 0;
+ displayspo2 = 0;
SetResult(BloodResult::NOT_TESTED); // 成功检测
// 进行初始化操作
if (!sensorstate)
void BloodOxygenModel::SetWearStatus(int32_t wear)
{
// 设置佩戴状态
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenModel Weartest::%d", wear);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenModel Weartest::%d", wear);
// 计数更新
if (wear_ != 1 && wear != 1)
#include "power_display_service.h"
#include "custom_utils.h"
#include "cywee_service.h"
+#include "battery_hal.h"
+
+#include"heart_blood/health_service/health_service.h"
#define BLOODKEYABLE 1
namespace OHOS
{
if (strcmp(view.GetViewId(), CLICK_BLOOD) == 0)
{
- NativeAbility::GetInstance().EnterSlice(VIEW_BLOODOXY_CHECK, TransitionType::TRANSITION_ZOOM);
+ // 如果正在充电进入提醒界面
+ if (get_charge_stat())
+ {
+ HealthState highHealthState;
+ highHealthState.checkType = CHARGE;
+ HealthService::GetInstance()->SetHealthCurrent(highHealthState);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID, TransitionType::TRANSITION_ZOOM);
+ }
+ else
+ {
+ NativeAbility::GetInstance().EnterSlice(VIEW_BLOOD_CHECK, TransitionType::TRANSITION_ZOOM);
+ }
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodPresenter::OnClick");
return true;
/***
* @Date: 2024-04-15 10:55:58
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-07-30 16:39:56
+ * @LastEditTime: 2024-07-31 14:36:25
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodResultView.cpp
*/
/*初始化title*/
InitLabelExt(titleLabel, 83, 50, 300, 35, "title", STR_BLOOD, DEFAULT_VECTOR_FONT_FILENAME, 30);
/*初始化血氧值label*/
- InitUILabel(bloodLabel, 83, 22, 300, 300, "bloodtext", "--", DEFAULT_VECTOR_FONT_FILENAME, 120);
+ InitUILabel(bloodLabel, 83, 32, 300, 300, "bloodtext", "--", DEFAULT_VECTOR_FONT_FILENAME, 140);
/*初始化检测时间*/
- InitLabelExt(timeLabel, 53, 260, 360, 35, "time", STR_CHECKNO, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(timeLabel, 53, 270, 360, 35, "time", STR_CHECKNO, DEFAULT_VECTOR_FONT_FILENAME, 30);
// 设置来回滚动属性
timeLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
timeLabel->SetRollSpeed(70);
#include "traing/training_card/include/Training_CardView.h"
#include "dnotdisturb/include/DnotDisturbModel.h"
#include "weather/include/WeatherModel.h"
+#include "heart_blood/health_service/health_service.h"
+
#if USE_OFFLINE_DIAL
#include "DialViewGroup.h"
#endif
{DROPDOWN_CLICK_DNOTDISTURB, VIEW_DNOTDISTURB}, // 勿扰
{DROPDOWN_CLICK_SAVEELE, VIEW_SAVEELE}, // 省电模式
{DROPDOWN_CLICK_FINDMYPHONE, VIEW_FIND_PHONE}, // 查找手机
- {MAIN_CLICK_BLOOD, VIEW_BLOODOXY_CHECK}, // 血氧检查
+ {MAIN_CLICK_BLOOD, VIEW_BLOOD_CHECK}, // 血氧检查
{MAIN_CLICK_SETCARD, VIEW_ADD_CARD}, // 卡片管理
};
{
MainModel::GetInstance().SetFromSetCardView(true);
MainModel::GetInstance().SetFromCardId(BLOODOXGEN);
+ // 如果正在充电进入提醒界面
+ if (get_charge_stat())
+ {
+ HealthState highHealthState;
+ highHealthState.checkType = CHARGE;
+ HealthService::GetInstance()->SetHealthCurrent(highHealthState);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID, TransitionType::TRANSITION_ZOOM);
+ }
}
-
// 如果勿扰模式是开启状态,在下拉界面点击勿扰快捷入口会关闭勿扰模式不进入勿扰视图
if (g_jumpView[curViewId] == VIEW_DNOTDISTURB && DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() == true)
{
};\r
enum PopupType\r
{\r
- EndPopup,\r
- GetTagPopup,\r
- HeartPopup,\r
+ EndPopup, // 结束训练弹窗\r
+ GetTagPopup, // 达到训练目标弹窗\r
+ HeartPopup, // 达到最高心率弹窗\r
};\r
class TraingCardPresenter;\r
class TrainingControlView;\r
\r
// 定义点击事件映射\r
static const std::unordered_map<std::string, std::function<void()>> actionMap = {\r
+ // 暂停按键\r
{BUTTONSTOP, [&]()\r
{\r
auto currentState = TraingModel::GetInstance()->GetSportState();\r
handleContinueState();\r
}\r
}},\r
+ // 结束按键\r
{BUTTONEND, [&]()\r
{\r
ControlSensor(ExerciseState::Pause);\r
TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
TraingCardView::GetInstance()->RefreshEndView();\r
}},\r
+ // 确定结束\r
{BUTTONEXIT, [&]()\r
{\r
handleEndState();\r
}},\r
+ // 返回\r
{BUTTONBACK, [&]()\r
{\r
ControlSensor(ExerciseState::Continue);\r
TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
}},\r
+ // 确定达到目标\r
{BUTTONWINOK, [&]()\r
{\r
TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
TraingCardView::GetInstance()->GetAnimator()->Stop();\r
}},\r
+ // 确定心率提醒\r
{BUTTONNOTE, [&]()\r
{\r
TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
{\r
// 设置目标:在非运动情况下设置 [单指令,执行后退出]\r
TraingModel::GetInstance()->SetSportTag(static_cast<ExerciseTag>(cmd->sportTagType), cmd->sportTag);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
return true;\r
}\r
break;\r
\r
case SENDDATA:\r
TraingModel::GetInstance()->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
return true;\r
default:\r
break;\r
}\r
}\r
\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],cmd->sportTag[%d]\r\n", cmd->sportType, cmd->controlmd, cmd->sportTagType, cmd->sportTag);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],cmd->sportTag[%d]\r\n", cmd->sportType, cmd->controlmd, cmd->sportTagType, cmd->sportTag);\r
\r
ExerciseState cmdState = static_cast<ExerciseState>(cmd->controlmd);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ExerciseState::End [%d]\r\n", cmdState);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ExerciseState::End [%d]\r\n", cmdState);\r
\r
switch (cmdState)\r
{\r
#include "watchQRcode/include/WatchQRCodeView.h"
#include "wearable_log.h"
#include "custom_utils.h"
-#include "language/font/ui_resource_string.h"
+#include "ui_resource_string.h"
#include "iostream"
#include "string"
namespace OHOS
STR_AIMODES_WENXINYIYAN = 472,\r
STR_AIMODES_KIMI = 473,\r
STR_AIMODES_CHATGPT = 474,\r
- STR_SLIDE_TO_SHUTDOWN = 475,\r
- STR_SLIDE_TO_REBOOT = 476,\r
- STR_AI_FAMILY_MEALS = 477,\r
- STR_CHAT = 478,\r
- STR_PCY4GC_OR_AS = 479,\r
- STR_API_KEYS = 480,\r
- STR_PGTTAF = 481,\r
- STR_DAFBS = 482,\r
- STR_OPENAI_API_KEYS = 483,\r
- STR_KHBB = 484,\r
- STR_GTAS = 485,\r
- STR_DYWTDAK = 486,\r
- STR_CONNECTING = 487,\r
- STR_CONNECTION_FAIL = 488,\r
- STR_PTALORTM = 489,\r
- STR_MOTION_DETECTION_NOTE = 490,\r
- STR_PE4GC = 491,\r
- STR_OBU_MESSAGE = 492,\r
- STR_MAX_ID = 493,\r
+ STR_CHARGE = 475,\r
+ STR_CHARGE_NOTE = 476,\r
+ STR_MAX_ID = 477,\r
}; // UIResourceTextId\r
enum FontLanguageId : uint8_t {
- LANGUAGE_ID_EN,\r
LANGUAGE_ID_ZH,\r
+ LANGUAGE_ID_EN,\r
LANGUAGE_ID_MAX\r
}; // UITextLanguageTextId\r
}\r
{ConfigDataType::DATATYPE_INT, "heartrate_freq", "0" },// CONFIGMODEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率
{ConfigDataType::DATATYPE_INT, "heartrate_remind", "0"},// CONFIGMODEL_ITEM_HEARTRATE_REMIND//提醒开关
- {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0"},// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE//
+ {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0"},// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE//心率值
{ConfigDataType::DATATYPE_INT, "heart_max_min", "0"},// CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN//最大值或者最小值