#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
}
/* ---------------------------------- 状态检测 ---------------------------------- */
+ // 血氧监控
+ 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()
{
// 进行初始化操作
/* -------------------------------------------------------------------------- */
}
}
+
}
#include "custom_utils.h"
#include "cywee_service.h"
-#define BLOODKEYABLE 0
+#define BLOODKEYABLE 1
namespace OHOS
{
static constexpr uint16_t PROGRESS_VALUE_MIN = 0;
BloodOxygenPresenter::~BloodOxygenPresenter()
{
-#if BLOODKEYABLE
- if (keyActListenr != nullptr)
- {
- delete keyActListenr;
- keyActListenr = nullptr;
- }
-#endif
g_pMainView = nullptr;
}
BloodOxygenPresenter *BloodOxygenPresenter::GetInstance()
{
Presenter<BloodOxygenView>::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) {}
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<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+ unsigned short keyID = event.GetKeyId();
+ unsigned short keyState = event.GetState();
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级
+ if (keyID == static_cast<uint16_t>(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)
{
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;
}
}
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;
}
}
BloodOxygenModel::GetInstance()->Blood_Stop();
}
}
+
void BloodOxygenPresenter::Notify(void)
{
ProgressNotify();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
display_time = DisplayBrightnessModel::GetInstance()->GetScreenDurationTime();
display_api->set_screen_auto_off_timeout(300 * 1000); // 设置常亮
+
View<BloodOxygenPresenter>::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()