From b4722987709df7e799472b9e1dae70b7a2a569e5 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Mon, 14 Oct 2024 14:43:07 +0800 Subject: [PATCH] =?utf8?q?=E4=B8=BB=E7=95=8C=E9=9D=A2=EF=BC=9A=E4=BC=98?= =?utf8?q?=E5=8C=96=E4=B8=BB=E7=95=8C=E9=9D=A2=E5=BF=83=E7=8E=87=E8=84=B1?= =?utf8?q?=E8=85=95=E7=9A=84=E5=93=8D=E5=BA=94=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/heartrate/include/HeartModel.h | 5 ++- .../heartrate/src/HeartChartPresenter.cpp | 2 +- .../heartrate/src/HeartDetectionPresenter.cpp | 2 +- .../nativeui/heartrate/src/HeartModel.cpp | 36 ++++++++++++++++--- .../nativeui/main/src/MainPresenterSample.cpp | 2 +- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h index ea1cf6354..94cbc63f0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h @@ -136,7 +136,7 @@ public: void SetResult(HeartResult result); HeartResult GetResult(); - void Heart_Start(void); + void Heart_Start(HeartCheck check); void Heart_Stop(void); void Heart_Save(void); void Heart_Result(void); @@ -174,8 +174,7 @@ private: uint16_t displayheart_max = 0; // 显示最大心率 uint16_t displayheart_min = 0; // 显示最小心率 - uint32 - timestamp_ms; // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚) + uint32 timestamp_ms; // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚) bool initstatus = true; bool heartstate = false; diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartChartPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartChartPresenter.cpp index 730528b81..2c2570c20 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartChartPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartChartPresenter.cpp @@ -60,7 +60,7 @@ namespace OHOS Presenter::OnStart(); if (!HeartCheckState) { - HeartModel::GetInstance()->Heart_Start(); + HeartModel::GetInstance()->Heart_Start(HeartCheck::INITIATIVE); HeartCheckState = true; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartDetectionPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartDetectionPresenter.cpp index 8406d011a..268e98023 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartDetectionPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartDetectionPresenter.cpp @@ -50,7 +50,7 @@ namespace OHOS Presenter::OnStart(); if (!HeartCheckState) { - HeartModel::GetInstance()->Heart_Start(); + HeartModel::GetInstance()->Heart_Start(HeartCheck::INITIATIVE); HeartCheckState = true; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp index 73d443ae6..f35d8df2b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp @@ -424,14 +424,16 @@ void HeartModel::Heart_Control(HeartState state, HeartCheck check) { } } // 开始检测 -void HeartModel::Heart_Start() { +void HeartModel::Heart_Start(HeartCheck check) { if (!sensorstate) { displayheart = 0; SetResult(HeartResult::NOT_TESTED); // 重置检测 - Heart_Control(HeartState::Start, HeartCheck::INITIATIVE); + Heart_Control(HeartState::Start, check); // ScreenTurnOn(60 * 1000); // 亮屏操作 600000ms 60秒关闭 sensorstate = true; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始心率检测"); + // 设置runtime + uapi_dev_runtime_set_heartrate_detect_status(1); } } @@ -458,6 +460,9 @@ void HeartModel::Heart_Stop() { return; } + //设置runtime + uapi_dev_runtime_set_heartrate_detect_status(0); + sensorstate = false; Heart_Result(); // 处理结果 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "本次心率检测结束"); @@ -561,12 +566,33 @@ void HeartModel::handleHighHeartRate() { } // 设置佩戴状态 void HeartModel::SetWearStatus() { + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d", + uapi_dev_runtime_get_heartrate_detect_status(), + unwear_counter_); + // 如果处于训练模式,提前返回 - if (uapi_dev_runtime_get_train_status() == 1) + if (uapi_dev_runtime_get_train_status() == 1 || + uapi_dev_runtime_get_heartrate_detect_status() == 0) return; + + unwear_counter_++; + // 设置佩戴状态 - SetResult(HeartResult::NOT_WORN); - Heart_Stop(); + if (checkstate == HeartCheck::CARDCHECK) { + if (unwear_counter_ > MAX_UNWEAR_COUNT) { + if (MainViewSample::GetInstance()) { + //只有在心率卡片界面才触发 + if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE) { + SetResult(HeartResult::NOT_WORN); + Heart_Stop(); + } + } + } + } else { + SetResult(HeartResult::NOT_WORN); + Heart_Stop(); + } } void HeartModel::UpHeartdata(uint16_t heart) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp index 21ec2c85e..0f86863a0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp @@ -481,7 +481,7 @@ namespace OHOS #if HEART_RATE_CHECK_TIMEOUT HeartModel::GetInstance()->Heart_Control(HeartState::Start,HeartCheck::CARDCHECK); #else - HeartModel::GetInstance()->Heart_Start(); + HeartModel::GetInstance()->Heart_Start(HeartCheck::CARDCHECK); #endif } /*主表盘*/ -- 2.17.1