From 02e418dff8d04938243478eee274fb5c9637de7a Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Fri, 20 Jun 2025 18:30:50 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/fd230app/CMakeLists.txt | 12 + .../nativelauncher/include/NativeLauncher.h | 3 +- .../nativelauncher/src/NativeLauncher.cpp | 71 +++-- .../nativeui/applist/src/ApplistModel.cpp | 2 +- .../stress/include/StressAnalysisView.h | 45 +--- .../nativeui/stress/include/StressMainView.h | 6 + .../nativeui/stress/include/StressModel.h | 59 ++++ .../nativeui/stress/include/StressPresenter.h | 1 + .../stress/src/StressAnalysisView.cpp | 244 ++++++++++------- .../nativeui/stress/src/StressMainView.cpp | 27 +- .../nativeui/stress/src/StressMeasureView.cpp | 4 +- .../nativeui/stress/src/StressModel.cpp | 251 ++++++++++++++++++ .../nativeui/stress/src/StressPresenter.cpp | 16 +- .../nativeui/stress/src/StressResultView.cpp | 6 +- .../stress/src/StressUnderMeasureView.cpp | 4 +- 15 files changed, 577 insertions(+), 174 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 95a35e9ac..ca973e3a0 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -272,6 +272,18 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/emotion/src/EmoTestFailedNoWearingView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/emotion/src/EmoTestFailedNoValueView.cpp + #压力 + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressMainView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressMeasureView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressUnderMeasureView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressAnalysisView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressModel.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressResultView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressWearView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressFailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressPresenter.cpp + + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceCaseListAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceListView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothPresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index 0527c3719..390c0cd52 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -75,6 +75,7 @@ namespace OHOS void InitRotateSlice(void); void InitBloodSlice(void); void InitBloodPressureSlice(void); + void InitStressSlice(void); void InitCheckAbnormalSlice(void); void InitCheckInvalidSlice(void); void InitHeartResultSlice(void); @@ -130,7 +131,7 @@ namespace OHOS /* -------------------------------------------------------------------------- */ void InitCalculatorSlice(void); void InintCalendarSlice(void); - + void InitScheduleSlice(void); void InitSleepModeSlice(void); void InittestSlice(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index e7e430419..ed266bd2e 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -68,11 +68,9 @@ #include "calculator/include/CalculatorPresenter.h" #include "calculator/include/CalculatorView.h" - #include "calendar/include/CalendarPresenter.h" #include "calendar/include/CalendarView.h" - #include "system/include/SystemPresenter.h" #include "system/include/SystemView.h" @@ -120,6 +118,9 @@ /*情绪测量*/ #include "emotion/include/EmoPresenter.h" #include "emotion/include/EmoView.h" +/*压力检测*/ +#include "stress/include/StressPresenter.h" +#include "stress/include/StressMainView.h" /*心率监测*/ #include "heartrate/include/HeartDetectionView.h" #include "heartrate/include/HeartDetectionPresenter.h" @@ -298,9 +299,9 @@ #include "system/include/SystemLogModel.h" -#include "ui_service.h" -extern "C" void uapi_dev_runtime_set_lock_status(uint8_t status); -extern "C" uint8_t uapi_dev_runtime_get_lock_status(void); +#include "ui_service.h" +extern "C" void uapi_dev_runtime_set_lock_status(uint8_t status); +extern "C" uint8_t uapi_dev_runtime_get_lock_status(void); #ifdef SUPPORT_ALIPAY_SEC #include "AlipayMainView.h" @@ -350,11 +351,11 @@ namespace OHOS {VIEW_INDOORWALK, &NativeLauncher::InitIndoorWalkSlice}, {VIEW_WEATHER, &NativeLauncher::InitWeatherSlice}, // 天气 {VIEW_GOAL, &NativeLauncher::InitGoalSlice}, // 每日目标 - {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice}, // 系统实例化地址 + {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice}, // 系统实例化地址 {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice}, // 声音与震动实例化地址 {VIEW_SYSTEM_VOLUME, - &NativeLauncher::InitSystemVolumeSlice}, // 系统音量 + &NativeLauncher::InitSystemVolumeSlice}, // 系统音量 {VIEW_CALL_VOLUME, &NativeLauncher::InitCallVolumeSlice}, // 系统音量 {VIEW_CLASSIC_BLUETOOTH, &NativeLauncher::InitClassicBluetoothSlice}, // 经典蓝牙slice @@ -427,22 +428,22 @@ namespace OHOS {VIEW_TRAININGNOMAL, &NativeLauncher::InitTraingNomalSlice}, // 正常训练初始界面 {VIEW_TRAININGSET, - &NativeLauncher::InitTraingSetSlice}, // 训练目标设置界面 + &NativeLauncher::InitTraingSetSlice}, // 训练目标设置界面 {VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice}, // 训练卡片 {VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice}, // 训练结束详细数据 {VIEW_TRAINING_RECORD, - &NativeLauncher::InitTraingRecordSlice}, // 训练记录 - {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练 + &NativeLauncher::InitTraingRecordSlice}, // 训练记录 + {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练 {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练 - {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练 + {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练 {VIEW_TRAININGFITNESS, - &NativeLauncher::InitTraingFitnessSlice}, // 健身训练 + &NativeLauncher::InitTraingFitnessSlice}, // 健身训练 {VIEW_TRAININGDANCE, &NativeLauncher::InitTraingDanceSlice}, // 舞蹈训练 - {VIEW_TRAININGREST, &NativeLauncher::InitTraingRestSlice}, // 休闲训练 - {VIEW_TRAININGBALL, &NativeLauncher::InitTraingBallSlice}, // 球类训练 + {VIEW_TRAININGREST, &NativeLauncher::InitTraingRestSlice}, // 休闲训练 + {VIEW_TRAININGBALL, &NativeLauncher::InitTraingBallSlice}, // 球类训练 {VIEW_TRAININGAQUATIC, - &NativeLauncher::InitTraingAquaticSlice}, // 水上训练 + &NativeLauncher::InitTraingAquaticSlice}, // 水上训练 {VIEW_TRAININGOTHER, &NativeLauncher::InitTraingOtherSlice}, // 水上训练 /* -------------------------------------------------------------------------- */ @@ -468,6 +469,8 @@ namespace OHOS {VIEW_ECG, &NativeLauncher::InitECGSlice}, /*情绪测量*/ {VIEW_EMOTION, &NativeLauncher::InitEmotionSlice}, + /*压力监测*/ + {VIEW_PRESSURE, &NativeLauncher::InitStressSlice}, /*心率检测*/ {VIEW_HEART_CHECK, &NativeLauncher::InitHeartCheckSlice}, {VIEW_HEART_RESULT, &NativeLauncher::InitHeartResultSlice}, @@ -574,10 +577,10 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues error"); } // 初始化所有预加载slice - + InitAllNativeSlices(); CallerLogModel::GetInstance()->InitPhoneService(); - GoalModel::GetInstance().GoalModelInitdata();//活动数据初始化 + GoalModel::GetInstance().GoalModelInitdata(); // 活动数据初始化 // PresenterTask::GetInstance()->Init(); PlayersModel::GetInstance()->AudioInit(); ActivityModel::GetInstance()->Init(); @@ -589,7 +592,7 @@ namespace OHOS TakephotosModel::GetInstance()->Init(); // 拍照消息订阅 MessageModel::GetInstance().Init(); // 消息订阅监听 AssistantModel::GetInstance()->Init(); // 语音助手消息订阅 - //音乐列表初始化,放在nativelauncher 初始化,防止手表连接耳机时,操控耳机控制手表音乐造成死机 + // 音乐列表初始化,放在nativelauncher 初始化,防止手表连接耳机时,操控耳机控制手表音乐造成死机 do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ, nullptr, 0); // 初始化默认首页 @@ -611,7 +614,7 @@ namespace OHOS mmi_sleep_mode_switch_read(); /*开机读取消息历史数据*/ - if(!MessageModel::GetInstance().LoadMessagesFromStorage()) + if (!MessageModel::GetInstance().LoadMessagesFromStorage()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessagesFromStorage failed!"); } @@ -619,7 +622,7 @@ namespace OHOS /*开机读取睡眠数据*/ SleepModel::GetInstance().read_sleep_file_data(); - //更新主表盘配置 + // 更新主表盘配置 MainModel::GetInstance().InitDialState(); // 初始化屏幕亮度 @@ -631,10 +634,10 @@ namespace OHOS // 开机增加震动 页面启动震动一次 // ui_api_vibrate_once_func(); } - // 注册开机时间 - SystemLogData systemlog; - systemlog.timestamp = SystemLogModel::GetInstance()->GetCurrentTime(); - systemlog.type = SystemLogType::POWER_ON; + // 注册开机时间 + SystemLogData systemlog; + systemlog.timestamp = SystemLogModel::GetInstance()->GetCurrentTime(); + systemlog.type = SystemLogType::POWER_ON; // 先读取日志 SystemLogModel::GetInstance()->loadLog(); // 再存储日志 @@ -1120,7 +1123,7 @@ namespace OHOS NativeAbility::GetInstance().AddSliceProxy(VIEW_CALCULATOR, Calculatorview_); } - void NativeLauncher::InintCalendarSlice(void) + void NativeLauncher::InintCalendarSlice(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitCalculatorSlice"); SliceProxy *Calendarview_ = new AbilitySliceProxy; @@ -1391,6 +1394,18 @@ namespace OHOS return; } NativeAbility::GetInstance().AddSliceProxy(VIEW_EMOTION, EmotionView); + } + // 压力监测界面 + void NativeLauncher::InitStressSlice(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitBloodPressureSlice"); + SliceProxy *stressView = new AbilitySliceProxy; + if (stressView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stressView is nullptr"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PRESSURE, stressView); } // 心率监测界面 void NativeLauncher::InitHeartCheckSlice(void) @@ -1452,7 +1467,7 @@ namespace OHOS } NativeAbility::GetInstance().AddSliceProxy(VIEW_SAFE_MODE, safemodeView); } - //语音助手 + // 语音助手 void NativeLauncher::InitAssistantSlice(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitAssistantSlice"); @@ -1463,7 +1478,7 @@ namespace OHOS } NativeAbility::GetInstance().AddSliceProxy(VIEW_ASSISTANT, assistantView); } - //时间格式 + // 时间格式 void NativeLauncher::InitSetTimeFormatSlice() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitSetTimeFormatSlice"); @@ -1472,7 +1487,7 @@ namespace OHOS { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "setTimeFormatView is nullptr"); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_SET_TIME_FORMAT,setTimeFormatView); + NativeAbility::GetInstance().AddSliceProxy(VIEW_SET_TIME_FORMAT, setTimeFormatView); } /* -------------------------------------------------------------------------- */ // 查找手机 diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp index 802b64099..c6a403e86 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -73,7 +73,7 @@ namespace OHOS //情绪 //{VIEW_EMOTION, PNG_APPLIST_EMOTION_IMAGE_BIG, PNG_APPLIST_EMOTION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "情绪", STR_EMOTION, nullptr}, //压力 - //{VIEW_STRESS, PNG_APPLIST_STRESS_IMAGE_BIG, PNG_APPLIST_STRESS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "压力", STR_STRESS, nullptr}, + //{VIEW_PRESSURE, PNG_APPLIST_STRESS_IMAGE_BIG, PNG_APPLIST_STRESS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "压力", STR_STRESS, nullptr}, //疲劳度 //{VIEW_FATIGUE, PNG_APPLIST_FATIGUE_IMAGE_BIG, PNG_APPLIST_FATIGUE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "疲劳度", STR_FATIGUE, nullptr}, #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressAnalysisView.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressAnalysisView.h index c91dccae8..94812fc38 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressAnalysisView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressAnalysisView.h @@ -1,44 +1,27 @@ -/*** - * @Date: 2024-07-29 15:38:56 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-29 15:42:12 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/StressAnalysisViewView.cpp - */ -/* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: StressAnalysisView view - * Author: - * Create: 2021-08-01 - */ - #ifndef STRESS_ANALYSIS_VIEW_H #define STRESS_ANALYSIS_VIEW_H -#include "View.h" -#include "BaseView.h" -#include "wearable_log.h" -#include "UiConfig.h" - +#include "components/ui_view_group.h" +#include "components/ui_label_ext.h" #include "components/ui_image_animator.h" - -#define STOP_SOS "stop_sos" - namespace OHOS { - class StressAnalysisViewView + class StressAnalysisView { public: - StressAnalysisViewView(); - virtual ~StressAnalysisViewView(); - static StressAnalysisViewView *GetInstance(void); - - UIViewGroup *StressAnalysisViewInit(); - UIImageAnimatorView *GetImageAnimator(); + StressAnalysisView(); + ~StressAnalysisView(); + static StressAnalysisView *GetInstance(void); + UIViewGroup *StressAnalysisInit(); + void startorstopAnalysisAni(bool state); private: - UIImageAnimatorView *imageAnimator{nullptr}; + void ClearAll(void); UIViewGroup *group{nullptr}; + UILabelExt *titleLabel{nullptr}; + UILabelExt *remindLabel{nullptr}; + UIImageAnimatorView *StressAnaAni{nullptr}; + ImageAnimatorInfo StressAnaAniImageInfo[30]; }; } - -#endif // 血氧主界面 \ No newline at end of file +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressMainView.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressMainView.h index 8b3d164ec..0e61f2a87 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressMainView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressMainView.h @@ -12,6 +12,7 @@ #include "stress/include/StressWearView.h" #include "stress/include/StressFailView.h" #include "stress/include/StressResultView.h" +#include "stress/include/StressAnalysisView.h" namespace OHOS { @@ -19,7 +20,10 @@ namespace OHOS { STRESSMEASUREVIEW = 0, // 压力测量界面 STRESSUNDERMEASUREVIEW, // 测量中界面 + STRESSANALYSISEVIEW, // 分析界面 STRESSRESULTVIEW, // 测量结果界面 + STRESSWEARVIEW, // 佩戴错误界面 + STRESSFAILVIEW, // 测量失败界面 MAX_STRESSVIEW, } StressVIEWID; @@ -40,6 +44,7 @@ namespace OHOS bool ChangeStressResultView(int16_t); bool ChangeStressWearView(int16_t); bool ChangeStressFailView(int16_t); + bool ChangeStressAnalysisView(int16_t); bool ClickFunc(int16_t interface); void ChangeView(int16_t hideView, int16_t showView); @@ -50,6 +55,7 @@ namespace OHOS StressResultView *g_pStressResultView{nullptr}; StressFailView *g_pStressFailView{nullptr}; StressWearView *g_pStressWearView{nullptr}; + StressAnalysisView *g_pStressAnalysisView{nullptr}; private: void DeInit(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h new file mode 100644 index 000000000..c7b13fd0b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h @@ -0,0 +1,59 @@ +#ifndef STRESS_MODEL_H +#define STRESS_MODEL_H + +#include +#include + + +namespace OHOS { +// 血压检测状态 +enum class StressState { + //结束 + STRESS_End = 0, + //压力检测中 + STRESS_MEASURE, + //结果分析中 + STRESS_ANALYSIS, + //普通状态 + STRESS_NORMAL, + //暂停 + STRESS_PAUSE, + + STRESS_STATE_MAX, +}; +// 压力检测结果 +enum class StressRESULT { + NOT_TESTED = 0, // 未检测 + SUCCESS, // 检测成功 + NOT_WORN, // 未佩戴检测 + TIMEOUT, // 检测超时 + HIGH_RESULT, // 检测结果过高 + LOW_RESULT, // 检测结果过低 + INVALID_DATA // 无效数据 +}; + +#define Stress_ANLYSISI_TIME_MAX 5 + +class StressModel { +public: + StressModel(); + ~StressModel(); + static StressModel *GetInstance(); + + //当前状态管理 + void Stress_SetState(StressState state); + StressState GetCurrentState(); + //控制血压检测 + void Stress_Control(StressState state); + + /////////////////////////////////////////////// + void Stress_StartTimer(uint32_t interval = 1*1000);// 1s定时器 + void Stress_StopTimer(void); + + +private: + StressState current_state = StressState::STRESS_NORMAL; +}; +} // namespace OHOS + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h index 1d996c0e6..1f3cb315b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h @@ -10,6 +10,7 @@ #include "KeyInputListener.h" #include "common/key_code.h" #include "stress/include/StressMainView.h" +#include "stress/include/StressModel.h" namespace OHOS { diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressAnalysisView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressAnalysisView.cpp index 3fcbed117..2280ed5c0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressAnalysisView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressAnalysisView.cpp @@ -1,113 +1,175 @@ -/*** - * @Date: 2024-04-15 10:55:58 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-31 14:36:25 - * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/bloodpressure/src/StressAnalysisViewView.cpp - */ - -#include "ui_resource_image.h" -#include "UiConfig.h" +#include "stress/include/StressAnalysisView.h" +#include "stress/include/StressPresenter.h" #include "wearable_log.h" -#include "uicomponents/UIComponents.h" -#include "bloodpressure/include/detection/StressPresenter.h" -#include "bloodpressure/include/detection/StressAnalysisViewView.h" -#include "bloodpressure/include/BPModel.h" +#include "UiConfig.h" +#include "common/image_cache_manager.h" namespace OHOS { - // 动态刷新设置 - static constexpr uint16_t IMAGE_SIZE = 466; - static constexpr uint16_t IMAGE_POSITION_Y = 0; - static constexpr uint16_t IMAGE_POSITION_X = 0; - static constexpr uint16_t BP_SOS_IMAGE_SIZE = 30; - static constexpr uint16_t BP_SOS_IMAGE_SPEED = 40; - static ImageAnimatorInfo g_imageAnimatorInfo_blood[30] = { - {PNG_BP_SOS_IMAGE_01, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_02, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_03, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_04, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_05, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_06, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_07, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_08, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_09, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BP_SOS_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + const char *StressAnaAniImagePath[] = { + PNG_STRESS_IMAGE_00, + PNG_STRESS_IMAGE_01, + PNG_STRESS_IMAGE_02, + PNG_STRESS_IMAGE_03, + PNG_STRESS_IMAGE_04, + PNG_STRESS_IMAGE_05, + PNG_STRESS_IMAGE_06, + PNG_STRESS_IMAGE_07, + PNG_STRESS_IMAGE_08, + PNG_STRESS_IMAGE_09, + PNG_STRESS_IMAGE_10, + PNG_STRESS_IMAGE_11, + PNG_STRESS_IMAGE_12, + PNG_STRESS_IMAGE_13, + PNG_STRESS_IMAGE_14, + PNG_STRESS_IMAGE_15, + PNG_STRESS_IMAGE_16, + PNG_STRESS_IMAGE_17, + PNG_STRESS_IMAGE_18, + PNG_STRESS_IMAGE_19, + PNG_STRESS_IMAGE_20, + PNG_STRESS_IMAGE_21, + PNG_STRESS_IMAGE_22, + PNG_STRESS_IMAGE_23, + PNG_STRESS_IMAGE_24, + PNG_STRESS_IMAGE_25, + PNG_STRESS_IMAGE_26, + PNG_STRESS_IMAGE_27, + PNG_STRESS_IMAGE_28, + PNG_STRESS_IMAGE_29, }; - static StressAnalysisViewView *g_pStressAnalysisViewView{nullptr}; + static StressAnalysisView *g_pStressAnalysisView = nullptr; + StressAnalysisView::StressAnalysisView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StressAnalysisView::StressAnalysisView"); + g_pStressAnalysisView = this; + } + + StressAnalysisView::~StressAnalysisView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StressAnalysisView::~StressAnalysisView"); + ClearAll(); + g_pStressAnalysisView = nullptr; + } - StressAnalysisViewView::StressAnalysisViewView() + StressAnalysisView *StressAnalysisView::GetInstance(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressAnalysisViewView::StressAnalysisViewView"); - g_pStressAnalysisViewView = this; + return g_pStressAnalysisView; } - StressAnalysisViewView::~StressAnalysisViewView() + + void StressAnalysisView::ClearAll(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressAnalysisViewView::~StressAnalysisViewView"); - if(group) + if (group) { - group->RemoveAll(); - if(imageAnimator) + group->RemoveAll(); + delete group; + group = nullptr; + delete titleLabel; + titleLabel = nullptr; + delete remindLabel; + remindLabel = nullptr; + if (StressAnaAni) { - imageAnimator->Stop(); - delete imageAnimator; - imageAnimator = nullptr; + StressAnaAni->Stop(); + delete StressAnaAni; + StressAnaAni = nullptr; } } - delete group; - group = nullptr; - g_pStressAnalysisViewView = nullptr; } - StressAnalysisViewView *StressAnalysisViewView::GetInstance() + void StressAnalysisView::startorstopAnalysisAni(bool state) { - return g_pStressAnalysisViewView; + if (StressAnaAni) + { + if (state) + { + StressAnaAni->Start(); + } + else + { + StressAnaAni->Stop(); + } + } } - /*** - * @description: - * @return 是否初始化成功 - */ - UIViewGroup *StressAnalysisViewView::StressAnalysisViewInit() + UIViewGroup *StressAnalysisView::StressAnalysisInit() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool StressAnalysisViewView::InitView()"); - group = new UIViewGroup(); - group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - - imageAnimator = new UIImageAnimatorView(); - imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_blood, BP_SOS_IMAGE_SIZE, BP_SOS_IMAGE_SPEED); - imageAnimator->SetRepeat(true); - group->Add(imageAnimator); - - - + if (group == nullptr) + { + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group null!"); + return nullptr; + } + } + group->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + group->SetTouchable(true); + group->SetDraggable(true); + // UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::StressPresenter::GetInstance(); + // group->SetOnDragListener(dragListener); + /* -------------------------------------------------------------------------- */ + StressAnaAni = new UIImageAnimatorView(); + if (StressAnaAni == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayBindAni::AlipayInitImageAni new StressAnaAni fail"); + return nullptr; + } + for (uint8_t i = 0; i < (sizeof(StressAnaAniImagePath) / sizeof(StressAnaAniImagePath[0])); i++) + { + StressAnaAniImageInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(StressAnaAniImagePath[i]); + StressAnaAniImageInfo[i].imageType = IMG_SRC_IMAGE_INFO; + StressAnaAniImageInfo[i].pos.x = 0; + StressAnaAniImageInfo[i].pos.y = 0; + StressAnaAniImageInfo[i].width = 466; + StressAnaAniImageInfo[i].height = 466; + } + StressAnaAni->SetPosition(0, 0, 466, 466); + StressAnaAni->SetImageAnimatorSrc(StressAnaAniImageInfo, (sizeof(StressAnaAniImagePath) / sizeof(StressAnaAniImagePath[0])), 100); + StressAnaAni->SetRepeat(true); + StressAnaAni->SetAutoEnable(false); + StressAnaAni->SetResizeMode(UIImageView::FILL); + group->Add(StressAnaAni); + /* -------------------------------------------------------------------------- */ + if (titleLabel == nullptr) + { + titleLabel = new UILabelExt(); + if (titleLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel null!"); + return nullptr; + } + } + titleLabel->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, 50, 300, 35); + titleLabel->SetStyle(STYLE_TEXT_FONT, 30); + titleLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + titleLabel->SetText("压力"); + titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + titleLabel->SetRollSpeed(23); + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + group->Add(titleLabel); + /* -------------------------------------------------------------------------- */ + if (remindLabel == nullptr) + { + remindLabel = new UILabelExt(); + if (remindLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "remindLabel null!"); + return nullptr; + } + } + remindLabel->SetPosition((HORIZONTAL_RESOLUTION - 300) / 2, 360, 300, 35); + remindLabel->SetStyle(STYLE_TEXT_FONT, 30); + remindLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + remindLabel->SetText("数据分析中,请耐心等待结果"); + remindLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x3a, 0x3a, 0xff)); + remindLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + remindLabel->SetRollSpeed(23); + remindLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + remindLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + group->Add(remindLabel); return group; } - - UIImageAnimatorView *StressAnalysisViewView::GetImageAnimator() - { - return imageAnimator; - } - - -} +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMainView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMainView.cpp index edc4a4ee9..a92e8b86b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMainView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMainView.cpp @@ -56,7 +56,7 @@ namespace OHOS delete g_pStressUnderMeasureView; g_pStressUnderMeasureView = nullptr; } - if (g_pStressResultView) + if (g_pStressResultView) { delete g_pStressResultView; g_pStressResultView = nullptr; @@ -128,7 +128,7 @@ namespace OHOS } return true; } - bool StressMainView::ChangeStressUnderMeasureView(int16_t thisView) + bool StressMainView::ChangeStressUnderMeasureView(int16_t thisView) { // 检查视图是否已初始化 if (group[thisView] == nullptr) @@ -200,6 +200,24 @@ namespace OHOS } return true; } + bool StressMainView::ChangeStressAnalysisView(int16_t thisView) + { + // 检查视图是否已初始化 + if (group[thisView] == nullptr) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "stressView::ChangeStressResultView"); + g_pStressAnalysisView = new StressAnalysisView(); + if (g_pStressAnalysisView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stressView:: new scrollView[%d] fail", thisView); + return false; + } + // 初始化视图并添加到视图组 + group[thisView] = g_pStressAnalysisView->StressAnalysisInit(); + container_->Add(group[thisView]); + } + return true; + } /** * 视图映射结构体 - 将视图ID映射到对应的视图切换函数 @@ -213,7 +231,10 @@ namespace OHOS static const StressViewMapper ViewMapper[] = { {STRESSMEASUREVIEW, &StressMainView::ChangeStressMeasureView}, {STRESSUNDERMEASUREVIEW, &StressMainView::ChangeStressUnderMeasureView}, - + {STRESSANALYSISEVIEW, &StressMainView::ChangeStressAnalysisView}, + {STRESSRESULTVIEW, &StressMainView::ChangeStressResultView}, + {STRESSWEARVIEW, &StressMainView::ChangeStressWearView}, + {STRESSFAILVIEW, &StressMainView::ChangeStressFailView}, }; bool StressMainView::ClickFunc(int16_t interface) diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMeasureView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMeasureView.cpp index 514794f22..c18099529 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMeasureView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressMeasureView.cpp @@ -86,7 +86,7 @@ namespace OHOS { InitLabel(titleLable, 200, 30, 70, 45, "titleLable", "压力", DEFAULT_VECTOR_FONT_FILENAME, 35); - InitLabel(resultremindLable, 68, 211, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); resultremindLable->SetTextColor(Color::White()); /*初始化检测时间*/ @@ -102,7 +102,7 @@ namespace OHOS bool StressMeasureView::Initbackground() { error = new UIImageView(); - error->SetPosition(145, 75, 200, 200); + error->SetPosition(140, 65, 111, 118); error->SetSrc(BPBACKPATH); group->Add(error); return true; diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp new file mode 100644 index 000000000..bef951330 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp @@ -0,0 +1,251 @@ +#include "stress/include/StressModel.h" +#include "stress/include/StressPresenter.h" +#include "stress/include/StressMainView.h" +#include "stress/include/StressAnalysisView.h" + + + + +#include "wearable_log.h" +#include +#include +#include + +#include "AppViewIDs.h" +#include "ConfigModel.h" +#include "NativeAbility.h" + +#include "battery_hal.h" +#include "custom_utils.h" +#include "ppg_service.h" + +namespace OHOS +{ +/** + * @brief Constructor for the StressModel class. + */ + +#define STRESS_MEASURE_TIME_MAX 30 +#define STRESS_ANALYSIS_TIME_MAX 5 + + // 声明定时器变量 + static osTimerId_t g_timer = nullptr; + static int Time = 30; + static StressState statefalg = StressState::STRESS_MEASURE; + + StressModel::StressModel() {} + StressModel::~StressModel() {} + StressModel *StressModel::GetInstance(void) + { + static StressModel instance; + return &instance; + } + + + // 管理当前状态 + void StressModel::Stress_SetState(StressState state) { current_state = state; } + StressState StressModel::GetCurrentState() { return current_state; } + + // 进行传感器、定时器等控制 + void StressModel::Stress_Control(StressState state) + { + if (state == current_state) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Stress_Control: Already in current state"); + return; + } + switch (state) + { + case StressState::STRESS_NORMAL: + { + /* + 关闭定时器 + 关闭传感器 + 关闭常亮 + */ + Stress_StopTimer(); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + Time = STRESS_MEASURE_TIME_MAX; + break; + } + case StressState::STRESS_MEASURE: + { + /* + 开启定时器 + 开启传感器 + 开启常亮 + */ + Stress_StartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 + + if (Time != STRESS_MEASURE_TIME_MAX) + Time = STRESS_MEASURE_TIME_MAX; // 重置时间 + + break; + } + case StressState::STRESS_ANALYSIS: + { + /* + 开启定时器 + 开启传感器 + 开启常亮 + */ + Stress_StartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 + + if (Time != STRESS_ANALYSIS_TIME_MAX) + Time = STRESS_ANALYSIS_TIME_MAX; // 重置时间 + + break; + } + + default: + /*未知状态,全部状态重置*/ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Stress_Control: Invalid state"); + Stress_SetState(StressState::STRESS_NORMAL); + Stress_StopTimer(); + Time = STRESS_MEASURE_TIME_MAX; + return; + } + // 更新状态 + Stress_SetState(state); + } + /////////////////////////////////////////////////////////////////////////////////////// + + /*定时器到期时的处理*/ + static void Stress_TimerCallbackProc(int data) + { + + // 倒计时 + Time--; + // 提前检查无效时间 + if (Time < 0) + { + StressModel::GetInstance()->Stress_StopTimer(); + StressModel::GetInstance()->Stress_SetState(StressState::STRESS_NORMAL); + if (statefalg == StressState::STRESS_ANALYSIS) //在分析中 + { + StressMainView::GetInstance()->ChangeView(STRESSANALYSISEVIEW,STRESSRESULTVIEW); + StressAnalysisView::GetInstance()->startorstopAnalysisAni(false); + statefalg = StressState::STRESS_MEASURE; + } + else if(statefalg == StressState::STRESS_MEASURE)//在检测中 + { + // 测量成功 + StressModel::GetInstance()->Stress_Control(StressState::STRESS_ANALYSIS); + StressMainView::GetInstance()->ChangeView(STRESSUNDERMEASUREVIEW, STRESSANALYSISEVIEW); + StressAnalysisView::GetInstance()->startorstopAnalysisAni(true); + statefalg = StressState::STRESS_ANALYSIS; + + + // 测量失败 + + } + return; + } + + StressState current_state_time = StressModel::GetInstance()->GetCurrentState(); + // 根据状态处理 + switch (current_state_time) + { + case StressState::STRESS_NORMAL: + StressModel::GetInstance()->Stress_StopTimer(); + StressModel::GetInstance()->Stress_SetState(StressState::STRESS_NORMAL); + return; + + case StressState::STRESS_MEASURE: + { + break; + } + case StressState::STRESS_ANALYSIS: + { + break; + } + + default: + StressModel::GetInstance()->Stress_StopTimer(); + // 显示错误界面提示 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_state is error!!"); + return; + } + } + + /* + * @brief 回调函数 + */ + static void Stress_TimerCallback(int data) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stress_TimerCallback %d", data); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(Stress_TimerCallbackProc, data)); + } + + /* + * @brief 开启定时器函数 + * @param interval 时间间隔,单位ms + */ + void StressModel::Stress_StartTimer(uint32_t interval) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressModel::Stress_StartTimer"); + /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 + * ------------------------- */ + if (g_timer != nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!"); + return; + } + + /* --------------------------------- 2.创建定时器 + * -------------------------------- */ + g_timer = osTimerNew((osTimerFunc_t)Stress_TimerCallback, osTimerPeriodic, + nullptr, nullptr); + // 检查定时器创建是否成功 + if (g_timer == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!"); + return; + } + + /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 + * ---------------------------- */ + int tick = osMs2Tick(interval); + + /* --------------------------------- 4.启动定时器 + * -------------------------------- */ + osStatus_t ret = osTimerStart(g_timer, tick); + /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 + * nullptr -------------------- */ + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", + ret); + if (g_timer != nullptr) + { + ret = osTimerDelete(g_timer); + } + g_timer = nullptr; + return; + } + } + /* + * @brief 停止定时器 + */ + void StressModel::Stress_StopTimer(void) + { + // 检查定时器是否存在 + if (g_timer != nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StressModel::Stress_StopTimer"); + osTimerStop(g_timer); + // 删除定时器并置为 nullptr + osStatus_t ret = osTimerDelete(g_timer); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "osTimerDelete failed, ret = %lx!!", ret); + } + g_timer = nullptr; + } + } + +} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp index d4027e801..4094b693d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp @@ -77,7 +77,6 @@ namespace OHOS void StressPresenter::OnStop(void) { - } bool StressPresenter::OnDrag(UIView &view, const DragEvent &event) @@ -111,19 +110,12 @@ namespace OHOS bool StressPresenter::OnClick(UIView &view, const ClickEvent &event) { - std::string viewId = view.GetViewId(); - - std::map> viewIdMap = { - {STARTBUTTON, {STRESSMEASUREVIEW, STRESSUNDERMEASUREVIEW}}, - {UNDERBUTTON, {STRESSMEASUREVIEW, STRESSUNDERMEASUREVIEW}}, - - }; - auto it = viewIdMap.find(viewId); - if (it != viewIdMap.end()) + if (strcmp(view.GetViewId(), STARTBUTTON) == 0) { - StressMainView::GetInstance()->ChangeView(it->second.first, it->second.second); - return true; + StressModel::GetInstance()->Stress_Control(StressState::STRESS_MEASURE); + StressMainView::GetInstance()->ChangeView(STRESSMEASUREVIEW, STRESSUNDERMEASUREVIEW); } + return true; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressPresenter::OnClick"); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressResultView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressResultView.cpp index 7b243e16a..84deb040b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressResultView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressResultView.cpp @@ -70,10 +70,10 @@ namespace OHOS { InitLabel(titleLable, 200, 30, 70, 45, "titleLable", "压力", DEFAULT_VECTOR_FONT_FILENAME, 35); - InitLabel(resultremindLable, 68, 211, 337, 100, "resultremindLable", "30", DEFAULT_VECTOR_FONT_FILENAME, 100); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "30", DEFAULT_VECTOR_FONT_FILENAME, 100); resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); resultremindLable->SetTextColor(Color::White()); - InitLabel(resultLable, 200, 352, 337, 45, "resultremindLable", "正常", DEFAULT_VECTOR_FONT_FILENAME, 35); + InitLabel(resultLable, 200, 362, 70, 45, "resultremindLable", "正常", DEFAULT_VECTOR_FONT_FILENAME, 35); /*初始化检测时间*/ group->Add(titleLable); group->Add(resultremindLable); @@ -89,7 +89,7 @@ namespace OHOS bool StressResultView::Initbackground() { error = new UIImageView(); - error->SetPosition(145, 75, 200, 200); + error->SetPosition(140, 65, 111, 118); error->SetSrc(BPBACKPATH); group->Add(error); return true; diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressUnderMeasureView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressUnderMeasureView.cpp index bb4bf6b8a..b2c25c92c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressUnderMeasureView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressUnderMeasureView.cpp @@ -86,7 +86,7 @@ namespace OHOS { InitLabel(titleLable, 200, 30, 70, 45, "titleLable", "压力", DEFAULT_VECTOR_FONT_FILENAME, 35); - InitLabel(resultremindLable, 68, 211, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); + InitLabel(resultremindLable, 68, 239, 337, 100, "resultremindLable", "---", DEFAULT_VECTOR_FONT_FILENAME, 100); resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); resultremindLable->SetTextColor(Color::White()); /*初始化检测时间*/ @@ -102,7 +102,7 @@ namespace OHOS bool StressUnderMeasureView::Initbackground() { error = new UIImageView(); - error->SetPosition(145, 75, 111, 118); + error->SetPosition(140, 65, 111, 118); error->SetSrc(BPBACKPATH); group->Add(error); return true; -- 2.17.1