From: Caisking <3449750381@qq.com> Date: Sat, 29 Jun 2024 09:25:12 +0000 (+0800) Subject: 血氧增加按键控制 X-Git-Tag: release_V1.2.70_20241020_135402~919 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=cef3d67200e779c44771416f60f65873e8401e5a;p=mirrors%2FFD230.git 血氧增加按键控制 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h index 10522899e..01228ae73 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-29 16:47:41 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h + */ #ifndef BLOOD_OXYGEN_MODEL_H #define BLOOD_OXYGEN_MODEL_H @@ -6,6 +12,12 @@ namespace OHOS { + // 血氧检测状态 + enum class BloodState + { + End = 0, + Start, + }; class BloodOxygenModel { public: @@ -43,6 +55,8 @@ namespace OHOS void Blood_Stop(); void Blood_Start(); + void Blood_Control(BloodState state); + private: bool OxygenView; bool BandoffView; @@ -54,6 +68,7 @@ namespace OHOS uint16_t SPO2_; uint64_t timestamp_ms; int32_t wear_; + bool startspo2{false}; uint8_t unwear_counter_; uint8_t valid_counter_; diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp index c0b2796b9..f02ca0f2e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp @@ -6,6 +6,8 @@ #include "heart_blood/health_service/health_service.h" #include "custom_utils.h" extern "C" errcode_t uapi_get_timestamp_ms(uint64_t *tm); +#include "custom_utils.h" +#include "ppg_service.h" #define MAX_UNWARE_COUNT 30 #define MAX_VALID_HRS_COUNT 30 @@ -38,6 +40,24 @@ namespace OHOS } /* ---------------------------------- 状态检测 ---------------------------------- */ + // 血氧监控 + void BloodOxygenModel::Blood_Control(BloodState state) + { + if (state == BloodState::End && startspo2 == true) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 End"); + uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST; + send_ppg_cmd_msg(md); + startspo2 = false; + } + else if (state == BloodState::Start && startspo2 == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 Start"); + uint8_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST; + send_ppg_cmd_msg(md); + startspo2 = true; + } + } void BloodOxygenModel::Blood_Start() { // 进行初始化操作 @@ -180,4 +200,5 @@ namespace OHOS /* -------------------------------------------------------------------------- */ } } + } diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp index 8847d7653..ad78066ad 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp @@ -36,7 +36,7 @@ #include "custom_utils.h" #include "cywee_service.h" -#define BLOODKEYABLE 0 +#define BLOODKEYABLE 1 namespace OHOS { static constexpr uint16_t PROGRESS_VALUE_MIN = 0; @@ -77,13 +77,6 @@ namespace OHOS BloodOxygenPresenter::~BloodOxygenPresenter() { -#if BLOODKEYABLE - if (keyActListenr != nullptr) - { - delete keyActListenr; - keyActListenr = nullptr; - } -#endif g_pMainView = nullptr; } BloodOxygenPresenter *BloodOxygenPresenter::GetInstance() @@ -95,20 +88,6 @@ namespace OHOS { Presenter::OnStart(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start "); -#if BLOODKEYABLE - if (keyActListenr == nullptr) - { - keyActListenr = new KeyInputListener(); - if (keyActListenr != nullptr) - { - RootView::GetInstance()->SetOnKeyActListener(keyActListenr); - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnStart: new KeyInputListener fail"); - } - } -#endif } void BloodOxygenPresenter::OnPause(void) {} @@ -151,17 +130,18 @@ namespace OHOS bool BloodOxygenPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { #if BLOODKEYABLE - WEARABLE_LOGD("", "into the view is: %s\n", typeid(view).name()); - uint16 keyID = event.GetKeyId(); - WEARABLE_LOGD("", "into key! keyID %u\n", keyID); - // 如果是power键就返回上一级 - if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { - // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); - NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + // 关闭血氧检测 + BloodOxygenModel::GetInstance()->Blood_Control(BloodState::End); + // 回退 + NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM); } -#endif return true; +#endif } /* ---------------------------------- 状态监听 ---------------------------------- */ bool BloodOxygenPresenter::OnClick(UIView &view, const ClickEvent &event) @@ -219,8 +199,9 @@ namespace OHOS { BloodCheckView::GetInstance()->GetImageAnimator()->Stop(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : false"); - uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST; - send_ppg_cmd_msg(md); + // 关闭血氧检测 + BloodOxygenModel::GetInstance()->Blood_Control(BloodState::End); + startspo2 = true; } } @@ -236,8 +217,9 @@ namespace OHOS if (startspo2 == true) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus : true"); - uint8_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST; - send_ppg_cmd_msg(md); + // 开启血氧检测 + BloodOxygenModel::GetInstance()->Blood_Control(BloodState::Start); + startspo2 = false; } } @@ -300,6 +282,7 @@ namespace OHOS BloodOxygenModel::GetInstance()->Blood_Stop(); } } + void BloodOxygenPresenter::Notify(void) { ProgressNotify(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp index d75edf6c0..5e8b9f4c0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp @@ -397,11 +397,15 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart"); display_time = DisplayBrightnessModel::GetInstance()->GetScreenDurationTime(); display_api->set_screen_auto_off_timeout(300 * 1000); // 设置常亮 + View::OnStart(); if (!InitBloodView()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitBloodView fail"); } + // 增加按键监听 + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BloodOxygenPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); } void BloodOxygenView::OnSetUpView()