From: Caisking <3449750381@qq.com> Date: Sun, 3 Mar 2024 02:48:29 +0000 (+0800) Subject: 增加血氧 X-Git-Tag: release_V1.2.70_20241020_135402~1274^2~45 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=51131bba7a492cccd71f3136c8e5978f15194023;p=mirrors%2FFD230.git 增加血氧 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 4cd279df3..528329242 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -135,6 +135,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodBandoffView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodCheckView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodResultView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceCaseListAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceListView.cpp @@ -234,8 +236,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingItemView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/src/KeyInputListener.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/src/ui_screennotify.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/blood/src/BloodCardView.cpp - + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/BloodCardView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/HeartCardView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 41701ddee..fc43f5631 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -27,10 +27,10 @@ typedef enum : uint16_t { VIEW_INVALID = 0, // 无效视图 /* ----------------------------- 每一个id对应一个slice ----------------------------- */ - VIEW_MAIN = 1, // 主界面 - VIEW_SETTING, // 设置 - VIEW_APPLIST, // App应用 - VIEW_DIALUPDATE, // 更新表盘ID ,请不要在前面增加任何Slice + VIEW_MAIN = 1, // 主界面 + VIEW_SETTING, // 设置 + VIEW_APPLIST, // App应用 + VIEW_DIALUPDATE, // 更新表盘ID ,请不要在前面增加任何Slice /* -------------------------------------------------------------------------- */ VIEW_MAIN_ALARM, // 闹钟 VIEW_ALARM_POP_UP, // 闹铃界面 @@ -38,7 +38,6 @@ typedef enum : uint16_t VIEW_CLASSIC_BLUETOOTH, // 经典蓝牙 VIEW_CALLER_LOG, // 通话记录界面 VIEW_INCOMING_CALL, // 来电界面 - VIEW_BLOODOXY, // 血氧饱和度界面 VIEW_COMPASS, // 指南针界面 VIEW_CONNECT_PHONE, // 连接手机界面 VIEW_INDOORWALK, // 室内步行 @@ -62,11 +61,13 @@ typedef enum : uint16_t VIEW_RECORD_PLAY, VIEW_RECORD_DELETE, VIEW_RECORD_GOING, - /* ---------------------------------- 测试界面 ---------------------------------- */ - VIEW_DIAL, // 切换表盘 - VIEW_MESSAGE, // 信息通知 - VIEW_BLOOD, // 血氧监测 - VIEW_ROTATE, // 模拟表冠 + /* ---------------------------------- 界面 ---------------------------------- */ + VIEW_DIAL, // 切换表盘 + VIEW_MESSAGE, // 信息通知 + VIEW_BLOOD, // 血氧监测 + VIEW_ROTATE, // 模拟表冠 + VIEW_BLOODOXY, // 血氧饱和度界面 + VIEW_HEART, // 心率监测 /* -------------------------------------------------------------------------- */ VIEW_MAIN_TEMP, // 体温界面(暂时不用) VIEW_OFFLINEVOICE, // 语音助手界面(暂时不用) @@ -79,7 +80,8 @@ typedef enum : uint16_t VIEW_MAX_INTER_APP, // 在此之前添加native应用ID. VIEW_EXTERN_APP = 0xFFFE, // 三方应用 VIEW_INVALIDE_APP = 0xFFFF, -} AppViewId; +} +AppViewId; /* * Slice页面优先级,越小优先级越高 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h index d284cf1a8..692839c84 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h @@ -96,53 +96,54 @@ namespace OHOS static constexpr const char *PNG_BLOOD_FLOW_IMAGE_29 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_31.bin"; static constexpr const char *PNG_BLOOD_FLOW_IMAGE_30 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_32.bin"; /* -------------------------------- 血氧动画 ------------------------------------------------- */ - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH"/COUNTDOWN_IMAGE_01.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH"/COUNTDOWN_IMAGE_02.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH"/COUNTDOWN_IMAGE_03.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH"/COUNTDOWN_IMAGE_04.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH"/COUNTDOWN_IMAGE_05.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH"/COUNTDOWN_IMAGE_06.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH"/COUNTDOWN_IMAGE_07.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH"/COUNTDOWN_IMAGE_08.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH"/COUNTDOWN_IMAGE_09.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH"/COUNTDOWN_IMAGE_10.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH"/COUNTDOWN_IMAGE_11.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH"/COUNTDOWN_IMAGE_12.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH"/COUNTDOWN_IMAGE_13.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH"/COUNTDOWN_IMAGE_14.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH"/COUNTDOWN_IMAGE_15.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH"/COUNTDOWN_IMAGE_16.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH"/COUNTDOWN_IMAGE_17.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH"/COUNTDOWN_IMAGE_18.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH"/COUNTDOWN_IMAGE_19.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH"/COUNTDOWN_IMAGE_20.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH"/COUNTDOWN_IMAGE_21.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH"/COUNTDOWN_IMAGE_22.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH"/COUNTDOWN_IMAGE_23.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH"/COUNTDOWN_IMAGE_24.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/COUNTDOWN_IMAGE_01.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/COUNTDOWN_IMAGE_02.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/COUNTDOWN_IMAGE_03.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/COUNTDOWN_IMAGE_04.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/COUNTDOWN_IMAGE_05.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/COUNTDOWN_IMAGE_06.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/COUNTDOWN_IMAGE_07.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/COUNTDOWN_IMAGE_08.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/COUNTDOWN_IMAGE_09.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/COUNTDOWN_IMAGE_10.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/COUNTDOWN_IMAGE_11.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/COUNTDOWN_IMAGE_12.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/COUNTDOWN_IMAGE_13.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/COUNTDOWN_IMAGE_14.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/COUNTDOWN_IMAGE_15.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/COUNTDOWN_IMAGE_16.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/COUNTDOWN_IMAGE_17.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/COUNTDOWN_IMAGE_18.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/COUNTDOWN_IMAGE_19.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/COUNTDOWN_IMAGE_20.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/COUNTDOWN_IMAGE_21.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/COUNTDOWN_IMAGE_22.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/COUNTDOWN_IMAGE_23.bin"; + static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/COUNTDOWN_IMAGE_24.bin"; + + static constexpr const char *PNG_CHECK_TIME_IMAGE_0 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_1.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_1 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_2.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_2 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_3.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_3 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_4.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_4 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_5.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_5 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_6.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_6 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_7.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_7 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_8.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_8 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_9.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_9 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_10.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_10 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_11.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_11 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_12.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_12 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_13.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_13 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_14.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_14 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_15.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_15 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_16.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_16 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_17.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_17 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_18.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_18 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_19.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin"; + static constexpr const char *PNG_CHECK_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin"; #if 0 - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_1.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_2.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_3.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_4.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_5.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_6.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_7.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_8.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_9.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_10.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_11.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_12.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_13.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_14.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_15.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_16.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_17.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_18.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_19.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin"; static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_23.bin"; static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_24.bin"; static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_24 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_25.bin"; @@ -285,6 +286,7 @@ namespace OHOS /* --------------------------------- AppList -------------------------------- */ static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin"; // 闹钟 static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin"; // 血氧 + static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_RES_PATH "/APPLIST_HEART.bin"; // 心率 static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置 static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin"; // 打电话 static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin"; // 指南针 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index 8cb7a33d1..2f541eba5 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -57,7 +57,7 @@ #include "UISampleView.h" #include "UISamplePresenter.h" -#include "blood/include/BloodCardView.h" +#include "heart_blood/include/BloodCardView.h" #include "weather/include/MainWeatherPresenter.h" #include "weather/include/MainWeatherView.h" @@ -370,7 +370,7 @@ namespace OHOS void NativeLauncher::InitMainBloodOxyView(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainBloodOxyView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainBloodOxyView"); SliceProxy *bloodOxygenView = new AbilitySliceProxy; if (bloodOxygenView == nullptr) { 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 62e2ecf1d..45b65903d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -32,6 +32,7 @@ namespace OHOS {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, "支付宝", nullptr}, #endif #if 0 + {VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr}, {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, "体温", nullptr}, {VIEW_CALLER_LOG, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, "通话记录", nullptr}, {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, "语音助手", nullptr}, diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodPresenter.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodTestView.h b/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodTestView.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodWarnView.h b/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodWarnView.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodNoteView.cpp b/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodNoteView.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodOxygenView.cpp b/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodOxygenView.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodPresenter.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodTestView.cpp b/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodTestView.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodTestView.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodWarnView.cpp b/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodWarnView.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodWarnView.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodBandoffView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodBandoffView.h index 52640bf7d..d579872e5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodBandoffView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodBandoffView.h @@ -11,7 +11,7 @@ #include "BaseView.h" #include "View.h" #include "ohos_types.h" - +#include "components/ui_scroll_view.h" namespace OHOS { class BloodBandoffView @@ -22,13 +22,13 @@ namespace OHOS UIViewGroup *CreateUIViewGroup(); static BloodBandoffView *GetInstance(void); - - UIViewGroup *GetBandoffViewGroup(); + UIScrollView *BloodBondoffViewInit(); UIImageAnimatorView *GetImageAnimator(); private: UILabel *label; UILabelButton *testButton; + UIScrollView *BloodBandoffScrollView; UIViewGroup *group; UIImageView *imageView; UIImageAnimatorView *imageAnimator; diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodCheckView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodCheckView.h new file mode 100644 index 000000000..af1c34c28 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodCheckView.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: bloodCheck view + * Author: + * Create: 2021-08-01 + */ + +#ifndef BLOOD_Check_VIEW_H +#define BLOOD_Check_VIEW_H + +#include "View.h" +#include "BaseView.h" +#include "wearable_log.h" +#include "UiConfig.h" +#include "components/ui_label.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_image_animator.h" +#include "components/ui_circle_progress.h" +#include "components/ui_view_group.h" +#include "BloodOxygenPresenter.h" +#include "BloodBandoffView.h" +#include "components/ui_scroll_view.h" +namespace OHOS +{ + class BloodOxygenPresenter; + class BloodBandoffView; + + class BloodCheckView : public View + { + public: + BloodCheckView(); + virtual ~BloodCheckView(); + static BloodCheckView *GetInstance(void); + UIScrollView *BloodCheckViewInit(); + UIImageAnimatorView *GetImageAnimator(); + UILabelButton *CreateAndSetUIButton(const char *title); + void UpSpo2Text(); + + private: + BloodBandoffView *bloodbandoff{nullptr}; + UIImageAnimatorView *imageAnimator; + UILabel *titleLabel; + UILabel *Spo2Text; + UIScrollView *BloodCheckScrollView; + UILabelButton *testButton; + }; +} + +#endif // 血氧主界面 \ No newline at end of file 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 1d3ea53d0..9ee3afe35 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h @@ -12,21 +12,34 @@ #include "gfx_utils/list.h" #include "los_mux.h" -namespace OHOS { -class BloodOxygenModel { -public: - ~BloodOxygenModel(){}; - static BloodOxygenModel *GetInstance(void); - bool GetBloodOxygenViewStatus(void); - bool GetBloodBandoffViewStatus(void); - void SetBloodOxygenViewStatus(bool oxygenViewStatus); - void SetBloodBandoffViewStatus(bool bandoffViewStatus); +namespace OHOS +{ + class BloodOxygenModel + { + public: + ~BloodOxygenModel(){}; + static BloodOxygenModel *GetInstance(void); + bool GetBloodOxygenViewStatus(void); + bool GetBloodBandoffViewStatus(void); + bool GetBloodCheckViewStatus(void); + void SetBloodOxygenViewStatus(bool oxygenViewStatus); + void SetBloodBandoffViewStatus(bool bandoffViewStatus); + void SetBloodCheckViewStatus(bool checkViewStatus); -private: - BloodOxygenModel(); - bool OxygenView; - bool BandoffView; -}; + bool GetCheckStatus(); + void SetCheckStatus(bool checkstatus); + void UpSPO2data(uint16_t spo2); + uint16_t GetSPO2data(); + + private: + BloodOxygenModel(); + bool OxygenView; + bool BandoffView; + bool CheckView; + bool ResultView; + bool CheckStatus; // 检测状态标志 + uint16_t SPO2_; // 血氧 + }; } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenPresenter.h index ecdfc36ab..3decd6847 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenPresenter.h @@ -14,9 +14,19 @@ #include "ohos_types.h" #include "KeyInputListener.h" #include "common/key_code.h" -#include "power_display_service.h" + namespace OHOS { + + typedef enum + { + BLOODVIEW = 0, // 血氧视图(slice) + BLOODBANDVIEW, // 佩戴视图(subView) + BLOODCHECKVIEW, // 检测视图(subView) + BLOODRESULT, // 测试失败(subView) + MAX_BLOODVIEW, + } BLOODVIEWID; + class BloodOxygenView; class BloodOxygenPresenter : public Presenter, public UIView::OnClickListener, @@ -35,6 +45,7 @@ namespace OHOS virtual void Notify() override; static BloodOxygenPresenter *GetInstance(void); bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; bool OnClick(UIView &view, const ClickEvent &event) override; bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 @@ -43,9 +54,8 @@ namespace OHOS void ReturnInterface(void); void ProgressNotify(void); int count; + bool startspo2 = true; KeyInputListener *keyActListenr{nullptr}; - const power_display_svr_api_t *display_api = power_display_svr_get_api(); - int display_time; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenView.h index 6c967880e..79fc59d25 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenView.h @@ -18,44 +18,65 @@ #include "components/ui_image_animator.h" #include "components/ui_circle_progress.h" #include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" #include "BloodOxygenPresenter.h" #include "BloodBandoffView.h" +#include "BloodCheckView.h" +#include "BloodResultView.h" +#include "power_display_service.h" +namespace OHOS +{ + class BloodOxygenPresenter; + class BloodBandoffView; + class BloodCheckView; + class BloodResultView; + class BloodOxygenView : public View + { + public: + BloodOxygenView(); + virtual ~BloodOxygenView(); -namespace OHOS { -class BloodOxygenView : public View { -public: - BloodOxygenView(); - virtual ~BloodOxygenView(); - - void OnStop() override; - void OnSetUpView() override; - void OnTearDownView() override; - void OnStart() override; - - static BloodOxygenView *GetInstance(void); - - UILabel *GetPercent(); - UIViewGroup *GetBloodOxygenGroup(); - UILabelButton *GetTestButton(); - UICircleProgress *GetCircleProgress(); -private: - bool InitImageDisplay(); - bool SetOnDragListener(); - UICircleProgress *CreateAndSetUICircleProgress(); - UILabelButton *CreateAndSetUIButton(const char *title); - UIView *CreateAndSetUIView(int16 x, int16 y) const; - - BloodBandoffView *bloodbandoff{nullptr}; - UIImageView *imageViewMain; - UIImageView *imageViewProgress; - UIImageAnimatorView *imageAnimator; - - UILabel *percent; - UIViewGroup *group; - UILabelButton *testButton; - UICircleProgress *circleProgress; -}; -} + void OnStop() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStart() override; + static BloodOxygenView *GetInstance(void); + bool ChangeBloodView(int16_t thisview); // 主视图 + bool ChangeBandoffView(int16_t thisview); + bool ChangeCheckView(int16_t thisview); + bool ChangeResultView(int16_t thisview); + + bool ClickFunc(int16_t interface); + void ChangeView(int16_t hideView, int16_t showView); + UIScrollView *GetBloodScrollView(int ViewId); + void Upspo2data(); + private: + // 增加图片 + bool InitImageDisplay(void); + // 初始化标签 + bool InitLabel(void); + // 添加label按键 + UILabelButton *CreateAndSetUIButton(const char *title); + // 初始化界面 + bool InitBloodView(void); + bool SetOnDragListener(void); + + BloodBandoffView *bloodbandoff{nullptr}; + BloodCheckView *bloodcheck{nullptr}; + BloodResultView *bloodresult{nullptr}; + UIScrollView *BloodScrollView[4]{nullptr}; + UIViewGroup *group; + UIImageView *imageViewMain; // 背景图片 + UILabel *percent; // 心率值 + UILabel *timeLabel; // 检测时间 + UILabel *titleLabel; // 页面title + UILabelButton *testButton; // 检测按键 + + const power_display_svr_api_t *display_api = power_display_svr_get_api(); + uint32_t display_time; + uint32_t spo2_; + }; +} -#endif // 血氧主界面 \ No newline at end of file +#endif // 血氧主界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodResultView.h b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodResultView.h new file mode 100644 index 000000000..065e56f3a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodResultView.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: bloodResult view + * Author: + * Create: 2021-08-01 + */ + +#ifndef BLOOD_Result_VIEW_H +#define BLOOD_Result_VIEW_H + +#include "View.h" +#include "BaseView.h" +#include "wearable_log.h" +#include "UiConfig.h" +#include "components/ui_label.h" +#include "components/ui_button.h" +#include "components/ui_label_button.h" +#include "components/ui_image_animator.h" +#include "components/ui_circle_progress.h" +#include "components/ui_view_group.h" +#include "BloodOxygenPresenter.h" +#include "BloodBandoffView.h" +#include "components/ui_scroll_view.h" +namespace OHOS +{ + class BloodOxygenPresenter; + class BloodBandoffView; + + class BloodResultView : public View + { + public: + BloodResultView(); + virtual ~BloodResultView(); + static BloodResultView *GetInstance(void); + UIScrollView *BloodResultViewInit(); + private: + // 增加图片 + bool InitImageDisplay(void); + // 初始化标签 + bool InitLabel(void); + BloodResultView *bloodresult{nullptr}; + UIImageView *imageerror; // 图片 + UILabel *titlelabel; + UILabel *label1; + UILabel *label2; + UILabel *label3; + + UIScrollView *BloodResultScrollView; + UILabelButton *ReButton; + UILabelButton *StButton; + }; +} + +#endif // 血氧主界面 \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodBandoffView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodBandoffView.cpp index 871577688..2905c9068 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodBandoffView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodBandoffView.cpp @@ -1,239 +1,4 @@ -/* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: bloodBandoff view - * Author: - * Create: 2021-08-01 - */ -#if 0 -#include "UiConfig.h" -#include "wearable_log.h" -#include "BloodBandoffView.h" -#include "BloodOxygenModel.h" - -namespace OHOS -{ - // 动态显示图片设置 - static constexpr uint16_t IMAGE_SIZE = 180; - static constexpr uint16_t IMAGE_POSITION_Y = 134; - static constexpr uint16_t IMAGE_POSITION_X = 150; - static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 90; - static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 30; - - // 标签设置 - static constexpr uint16_t LABEL_POSITION_X = 173; - static constexpr uint16_t LABEL_POSITION_Y = 52; - static constexpr uint16_t LABEL_POSITION_WIDTH = 120; - static constexpr uint16_t LABEL_POSITION_HEIGHT = 35; - - // 图片设置 - static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131; - static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70; - - static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30; - static constexpr uint16_t FONT_DEFAULT_SIZE = 30; - static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48; - static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50; - static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11; - - static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = { - {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_31, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_32, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_33, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_34, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_35, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_36, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_37, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_38, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_39, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_40, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_41, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_42, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_43, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_44, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_45, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_46, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_47, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_48, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_49, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_50, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_51, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_52, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_53, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_54, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_55, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_56, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_57, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_58, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_59, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_60, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_61, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_62, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_63, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_64, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_65, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_66, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_67, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_68, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_69, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_70, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_71, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_72, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_73, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_74, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_75, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_76, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_77, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_78, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_79, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_80, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_81, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_82, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_83, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_84, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_85, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_86, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_87, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_88, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_COUNTDOWN_TIME_IMAGE_89, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - }; - static BloodBandoffView *g_pMainView = nullptr; - BloodBandoffView::BloodBandoffView() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView"); - label = nullptr; - imageView = nullptr; - group = nullptr; - imageAnimator = nullptr; - g_pMainView = this; - } - - BloodBandoffView::~BloodBandoffView() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView"); - group->RemoveAll(); - delete label; - delete imageView; - delete group; - delete imageAnimator; - label = nullptr; - imageView = nullptr; - group = nullptr; - imageAnimator = nullptr; - g_pMainView = nullptr; - } - - BloodBandoffView *BloodBandoffView::GetInstance(void) - { - return g_pMainView; - } - - UIViewGroup *BloodBandoffView::GetBandoffViewGroup() - { - return group; - } - - UIImageAnimatorView *BloodBandoffView::GetImageAnimator() - { - return imageAnimator; - } - - UIViewGroup *BloodBandoffView::CreateUIViewGroup() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup"); - group = new UIViewGroup(); - if (group == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail"); - return nullptr; - } - group->SetPosition(0, 0); - group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - - label = new UILabel(); - if (label == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail"); - return nullptr; - } - group->Add(label); - label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT); - label->SetText("正在检测"); - label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE); - label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - - imageAnimator = new UIImageAnimatorView(); - if (imageAnimator == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail"); - return nullptr; - } - imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED); - imageAnimator->Start(); - imageAnimator->SetRepeat(false); - group->Add(imageAnimator); - - if (testButton == nullptr) - { - testButton = new UILabelButton(); - } - testButton->SetPosition(118, 336); // widget's left position and top position - testButton->Resize(230, 80); // widget's width and height - testButton->SetViewId("labelButton"); // Set style - testButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); - - // Set additional property - testButton->SetText("停止检测"); - testButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); - testButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - group->Add(testButton); - -#if 0 - imageView = new UIImageView(); - if (imageView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail"); - return nullptr; - } - imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset - imageView->SetSrc(PNG_BLOOD_ICON_ENTER); - group->Add(imageView); -#endif - return group; - } -} -#endif - /* * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. * Description: bloodBandoff view @@ -302,7 +67,7 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView"); label = nullptr; imageView = nullptr; - group = nullptr; + BloodBandoffScrollView = nullptr; imageAnimator = nullptr; g_pMainView = this; } @@ -310,14 +75,14 @@ namespace OHOS BloodBandoffView::~BloodBandoffView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView"); - group->RemoveAll(); + BloodBandoffScrollView->RemoveAll(); delete label; delete imageView; - delete group; delete imageAnimator; label = nullptr; imageView = nullptr; - group = nullptr; + delete BloodBandoffScrollView; + BloodBandoffScrollView = nullptr; imageAnimator = nullptr; g_pMainView = nullptr; } @@ -327,61 +92,65 @@ namespace OHOS return g_pMainView; } - UIViewGroup *BloodBandoffView::GetBandoffViewGroup() - { - return group; - } - + // 返回动画状态 UIImageAnimatorView *BloodBandoffView::GetImageAnimator() { return imageAnimator; } - UIViewGroup *BloodBandoffView::CreateUIViewGroup() + UIScrollView *BloodBandoffView::BloodBondoffViewInit() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup"); - group = new UIViewGroup(); - if (group == nullptr) + // 初始化界面 + BloodBandoffScrollView = new UIScrollView(); + if (BloodBandoffScrollView == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail"); - return nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBondoffViewInit::BloodBandoffView new fail!"); + // return nullptr; } - group->SetPosition(0, 0); - group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + BloodBandoffScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + BloodBandoffScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + BloodBandoffScrollView->SetStyle(STYLE_BORDER_RADIUS, 1294); + BloodBandoffScrollView->SetScrollBlankSize(35); + BloodBandoffScrollView->SetReboundSize(50); + BloodBandoffScrollView->SetDirection(1); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup"); + // 佩戴title label = new UILabel(); if (label == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail"); - return nullptr; + // return nullptr; } - group->Add(label); label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT); label->SetText("偏紧佩戴,保持静止"); label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE); label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + BloodBandoffScrollView->Add(label); + // 播放动画 imageAnimator = new UIImageAnimatorView(); if (imageAnimator == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail"); - return nullptr; + // return nullptr; } imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED); imageAnimator->Start(); imageAnimator->SetRepeat(false); - group->Add(imageAnimator); + BloodBandoffScrollView->Add(imageAnimator); + // 提醒图片 imageView = new UIImageView(); if (imageView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail"); - return nullptr; + // return nullptr; } imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset imageView->SetSrc(PNG_BLOOD_ICON_ENTER); - group->Add(imageView); + BloodBandoffScrollView->Add(imageView); - return group; + return BloodBandoffScrollView; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodCheckView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodCheckView.cpp new file mode 100644 index 000000000..66cd263f2 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodCheckView.cpp @@ -0,0 +1,172 @@ + + +#include "UiConfig.h" +#include "wearable_log.h" +#include "BloodCheckView.h" +#include "BloodOxygenModel.h" +#include "ui_image_animator.h" +#include "BloodCheckView.h" +namespace OHOS +{ + // 动态刷新设置 + static constexpr uint16_t IMAGE_SIZE = 180; + static constexpr uint16_t IMAGE_POSITION_Y = 134; + static constexpr uint16_t IMAGE_POSITION_X = 150; + static constexpr uint16_t CHECKIMAGEANIMATORVIEW_SIZE = 20; + static constexpr uint16_t CHECKIMAGEANIMATORVIEW_SPEED = 40; + + static ImageAnimatorInfo g_imageAnimatorInfo_Time[20] = { + {PNG_CHECK_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + {PNG_CHECK_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, + }; + + static BloodCheckView *g_pMainView = nullptr; + BloodCheckView::BloodCheckView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView"); + titleLabel = nullptr; + BloodCheckScrollView = nullptr; + imageAnimator = nullptr; + testButton = nullptr; + g_pMainView = this; + } + + BloodCheckView *BloodCheckView::GetInstance(void) + { + return g_pMainView; + } + + UIImageAnimatorView *BloodCheckView::GetImageAnimator() + { + return imageAnimator; + } + + BloodCheckView::~BloodCheckView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodCheckView::~BloodCheckView"); + BloodCheckScrollView->RemoveAll(); + delete titleLabel; + delete testButton; + delete BloodCheckScrollView; + delete imageAnimator; + delete Spo2Text; + titleLabel = nullptr; + BloodCheckScrollView = nullptr; + imageAnimator = nullptr; + testButton = nullptr; + Spo2Text = nullptr; + g_pMainView = this; + } + void BloodCheckView::UpSpo2Text() + { + uint16_t spo2_ = BloodOxygenModel::GetInstance()->GetSPO2data(); + //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", spo2_); + std::string bloodoxygenStr = std::to_string(spo2_); + Spo2Text->SetText(bloodoxygenStr.c_str()); + } + UIScrollView *BloodCheckView::BloodCheckViewInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodCheckView::CreateUIViewBloodCheckScrollView"); + BloodCheckScrollView = new UIScrollView(); + if (BloodCheckScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new BloodCheckScrollView fail"); + return nullptr; + } + BloodCheckScrollView->SetPosition(0, 0); + BloodCheckScrollView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + /* -------------------------------------------------------------------------- */ + titleLabel = new UILabel(); + if (titleLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new titleLabel fail"); + return nullptr; + } + titleLabel->SetPosition(175, 55); // widget's left position and top position + titleLabel->Resize(200, 90); // widget's width and height + titleLabel->SetViewId("label3"); // Set style + titleLabel->SetStyle(STYLE_TEXT_FONT, 28); + titleLabel->SetText("正在检测"); + titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titleLabel->SetRollSpeed(0); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + BloodCheckScrollView->Add(titleLabel); + /* -------------------------------------------------------------------------- */ + + imageAnimator = new UIImageAnimatorView(); + if (imageAnimator == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail"); + return nullptr; + } + imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, CHECKIMAGEANIMATORVIEW_SIZE, CHECKIMAGEANIMATORVIEW_SPEED); + imageAnimator->SetRepeatTimes(20); + imageAnimator->SetRepeat(false); + imageAnimator->Start(); + BloodCheckScrollView->Add(imageAnimator); + /* -------------------------------------------------------------------------- */ + if (testButton == nullptr) + { + testButton = new UILabelButton(); + } + testButton->SetPosition(118, 336); // widget's left position and top position + testButton->Resize(230, 80); // widget's width and height + testButton->SetViewId("labelButton"); // Set style + testButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + + // Set additional property + testButton->SetText("停止检测"); + testButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + testButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + testButton->SetViewId("checkstop"); + UIView::OnClickListener *clickLeftListener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance(); + if (clickLeftListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail"); + return nullptr; + } + testButton->SetOnClickListener(clickLeftListener); + BloodCheckScrollView->Add(testButton); + /* -------------------------------------------------------------------------- */ + Spo2Text = new UILabel(); + if (Spo2Text == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Spo2Text fail"); + return nullptr; + } + Spo2Text->SetPosition(133, 110); // widget's left position and top position + Spo2Text->Resize(200, 200); // widget's width and height + Spo2Text->SetViewId("label"); // Set style + Spo2Text->SetStyle(STYLE_TEXT_FONT, 140); + uint16_t spo2_ = BloodOxygenModel::GetInstance()->GetSPO2data(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", spo2_); + std::string bloodoxygenStr = std::to_string(spo2_); + Spo2Text->SetText(bloodoxygenStr.c_str()); + Spo2Text->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + Spo2Text->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + Spo2Text->SetRollSpeed(0); + Spo2Text->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 140); + BloodCheckScrollView->Add(Spo2Text); + /* -------------------------------------------------------------------------- */ + return BloodCheckScrollView; + } +} 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 9e2eea3c4..8cd73beff 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenModel.cpp @@ -6,13 +6,19 @@ */ #include "BloodOxygenModel.h" - +#include "DialModelSPO2.h" +#include "wearable_log.h" namespace OHOS { BloodOxygenModel::BloodOxygenModel() { OxygenView = false; BandoffView = false; + CheckView = false; + ResultView = false; + CheckStatus = false; + // 初始化血氧值 + SPO2_ = DialModelSPO2::GetInstance()->GetSPO2Data(); } bool BloodOxygenModel::GetBloodOxygenViewStatus(void) @@ -25,6 +31,11 @@ namespace OHOS return BandoffView; } + bool BloodOxygenModel::GetBloodCheckViewStatus(void) + { + return CheckView; + } + void BloodOxygenModel::SetBloodBandoffViewStatus(bool bandoffViewStatus) { BandoffView = bandoffViewStatus; @@ -35,6 +46,33 @@ namespace OHOS OxygenView = oxygenViewStatus; } + void BloodOxygenModel::SetBloodCheckViewStatus(bool checkViewStatus) + { + CheckView = checkViewStatus; + } + + /* -------------------------------------------------------------------------- */ + // 获取检测状态 + bool BloodOxygenModel::GetCheckStatus() + { + return CheckStatus; + } + // 设置检测状态 + void BloodOxygenModel::SetCheckStatus(bool checkstatus) + { + CheckStatus = checkstatus; + } + uint16_t BloodOxygenModel::GetSPO2data() + { + return SPO2_; + } + void BloodOxygenModel::UpSPO2data(uint16_t spo2) + { + //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpSPO2data SPO2:%d->%d", SPO2_, spo2); + SPO2_ = spo2; + } + /* -------------------------------------------------------------------------- */ + BloodOxygenModel *BloodOxygenModel::GetInstance(void) { static BloodOxygenModel instance; 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 787c6fe20..673e7c11e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp @@ -9,6 +9,7 @@ #include "common/task_manager.h" #include "BloodOxygenView.h" #include "BloodOxygenModel.h" +#include "BloodCheckView.h" #include "components/ui_label.h" #include "BloodBandoffView.h" #include "ChangeSliceListener.h" @@ -29,26 +30,31 @@ #include "ppg_service.h" #include "displaybrightness/include/DisplayBrightnessModel.h" #include "power_display_service.h" + +#define BLOODKEYABLE 0 namespace OHOS { static BloodOxygenPresenter *g_pMainView = nullptr; + BloodOxygenView *g_pbloodview = BloodOxygenView::GetInstance(); + static constexpr uint16_t PROGRESS_VALUE_MIN = 0; - static constexpr uint16_t PROGRESS_VALUE_MAX = 100; + static constexpr uint16_t PROGRESS_VALUE_MAX = 10; BloodOxygenPresenter::BloodOxygenPresenter() { - count = PROGRESS_VALUE_MAX; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::new BloodOxygenPresenter"); g_pMainView = this; } BloodOxygenPresenter::~BloodOxygenPresenter() { +#if BLOODKEYABLE if (keyActListenr != nullptr) { delete keyActListenr; keyActListenr = nullptr; } +#endif g_pMainView = nullptr; } BloodOxygenPresenter *BloodOxygenPresenter::GetInstance() @@ -60,7 +66,7 @@ namespace OHOS { Presenter::OnStart(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start "); -#if 0 +#if BLOODKEYABLE if (keyActListenr == nullptr) { keyActListenr = new KeyInputListener(); @@ -100,53 +106,62 @@ namespace OHOS } return true; } - bool BloodOxygenPresenter::OnDrag(UIView &view, const DragEvent &event) { - UNUSED(view); + return true; + } + bool BloodOxygenPresenter::OnDragEnd(UIView &view, const DragEvent &event) + { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false); - BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true); NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + return true; } return false; } bool BloodOxygenPresenter::OnClick(UIView &view, const ClickEvent &event) { - display_time = DisplayBrightnessModel::GetInstance()->GetScreenDurationTime(); - display_api->set_screen_auto_off_timeout(30 * 1000); UNUSED(view); UNUSED(event); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick"); - if (CheckPointersValue() == false) + // 主界面点击开始检测 + if (strcmp(view.GetViewId(), "checkbegin") == 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty"); - return false; + BloodOxygenView::GetInstance()->ChangeView(BLOODVIEW, BLOODBANDVIEW); + BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true); + BloodBandoffView::GetInstance()->GetImageAnimator()->Start(); + return true; } - BloodOxygenView::GetInstance()->GetPercent()->SetText(""); - BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false); - BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true); - BloodBandoffView::GetInstance()->GetImageAnimator()->Stop(); -#ifdef SUPPORT_SPO2_NOTIFICATION - uint32_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST; - send_ppg_cmd_msg(md); - // 增加测试时间,大概20秒,测试期间,循环播放 - BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeatTimes(20); -#else - BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeatTimes(1); -#endif - BloodBandoffView::GetInstance()->GetImageAnimator()->Start(); - BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true); - BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false); - return true; + // 从检测界面回到主界面 + if (strcmp(view.GetViewId(), "checkstop") == 0) + { + BloodOxygenView::GetInstance()->ChangeView(BLOODCHECKVIEW, BLOODVIEW); + BloodOxygenModel::GetInstance()->SetBloodCheckViewStatus(false); + BloodOxygenModel::GetInstance()->SetCheckStatus(false); // 关闭检测 + return true; + } + // 从检测失败界面回到检测界面 + if (strcmp(view.GetViewId(), "ReCheck") == 0) + { + BloodOxygenView::GetInstance()->ChangeView(BLOODRESULT, BLOODCHECKVIEW); + BloodOxygenModel::GetInstance()->SetCheckStatus(true); // 开始检测 + return true; + } + // 从检测失败界面回到主界面 + if (strcmp(view.GetViewId(), "StCheck") == 0) + { + BloodOxygenView::GetInstance()->ChangeView(BLOODRESULT, BLOODVIEW); + BloodOxygenModel::GetInstance()->SetCheckStatus(false); // 关闭检测 + return true; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick"); + return false; } // 增加按键事件 bool BloodOxygenPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { -#if 0 +#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); @@ -161,42 +176,64 @@ namespace OHOS } void BloodOxygenPresenter::ProgressNotify(void) { - if (CheckPointersValue() == false) + // 当检测状态为开始检测,开始检测 + if (BloodOxygenModel::GetInstance()->GetCheckStatus() == true) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty"); - return; + BloodCheckView::GetInstance()->UpSpo2Text(); // 更新 + if (startspo2 == true) + { + uint8_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST; + send_ppg_cmd_msg(md); + startspo2 = false; + } } - if (BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) + + // 当检测状态为结束检测,结束检测 + if (BloodOxygenModel::GetInstance()->GetCheckStatus() == false) { - count--; - BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count); - if (count == PROGRESS_VALUE_MIN) + BloodOxygenView::GetInstance()->Upspo2data(); // 更新主界面 + if (startspo2 == false) { - BloodOxygenView::GetInstance()->GetPercent()->SetText("98%"); - BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false); - count = PROGRESS_VALUE_MAX; - BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count); - BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true); + uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST; + send_ppg_cmd_msg(md); + startspo2 = true; } } } void BloodOxygenPresenter::ReturnInterface() { + // 佩戴动画播放完毕,前往检测界面 if (BloodOxygenModel::GetInstance()->GetBloodBandoffViewStatus() == true) { if (BloodBandoffView::GetInstance()->GetImageAnimator()->GetState() == false) { + BloodOxygenView::GetInstance()->ChangeView(BLOODBANDVIEW, BLOODCHECKVIEW); BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(false); - BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(true); - - BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false); - BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(true); -#ifdef SUPPORT_SPO2_NOTIFICATION - uint32_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST; - send_ppg_cmd_msg(md); -#endif - display_api->set_screen_auto_off_timeout(display_time); // 复原 + // 设置检测界面状态 + BloodOxygenModel::GetInstance()->SetBloodCheckViewStatus(true); + // 播放检测界面动画 + BloodCheckView::GetInstance()->GetImageAnimator()->Start(); + BloodOxygenModel::GetInstance()->SetCheckStatus(true); // 开始检测 + } + } + // 检测动画播放完毕 + if (BloodOxygenModel::GetInstance()->GetBloodCheckViewStatus() == true) + { + if (BloodCheckView::GetInstance()->GetImageAnimator()->GetState() == false) + { + // 测试失败 + if (BloodOxygenModel::GetInstance()->GetSPO2data() == 0) + { + BloodOxygenView::GetInstance()->ChangeView(BLOODCHECKVIEW, BLOODRESULT); + } + // 测试成功 + else + { + BloodOxygenView::GetInstance()->ChangeView(BLOODCHECKVIEW, BLOODVIEW); + } + BloodOxygenModel::GetInstance()->SetCheckStatus(false); // 关闭检测 + BloodOxygenModel::GetInstance()->SetBloodCheckViewStatus(false); } } } 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 a8eb34a12..1e4705367 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp @@ -7,173 +7,137 @@ #include "BloodOxygenView.h" #include "BloodOxygenModel.h" - +#include "BloodOxygenPresenter.h" +#include "displaybrightness/include/DisplayBrightnessModel.h" +#include "power_display_service.h" namespace OHOS { // 按钮设置 - static constexpr uint16_t TESTBUTTON_ZERO = 0; - static constexpr uint16_t TESTBUTTON_X = 167; - static constexpr uint16_t TESTBUTTON_Y = 360; - - // 进度条参数设置 - static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100; - static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43; - static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360; - static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0; - static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10; - static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10; - static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10; - static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195; - static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37; - static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275; - static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130; - static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10; - static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5; - - // 动态刷新设置 - static constexpr uint16_t IMAGE_SIZE = 60; - static constexpr uint16_t IMAGE_POSITION_X = 186; - static constexpr uint16_t IMAGE_POSITION_Y = 23; - static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31; - static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40; - - // 血氧主图设置 - static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176; - static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13; - - // 血氧%显示 - static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258; - static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40; - - // 血氧柱状图 - static constexpr int16 VIEW_MAX_X = 415; - static constexpr int16 VIEW_MIN_X = 35; - static constexpr int16 VIEW_MAX_Y = 150; - static constexpr int16 VIEW_MIN_Y = 0; - static constexpr int16 VIEW_WIDTH = 7; - static constexpr int16 VIEW_HEIGHT = 300; - static constexpr uint16_t VIEW_BACKGROUND_OPA = 127; - static constexpr uint16_t VIEW_BORDER_RADIUS = 5; - static constexpr uint16_t BORDER_OPA = 127; - static constexpr uint16_t BORDER_WIDTH = 20; - - static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30; - static constexpr uint16_t FONT_DEFAULT_SIZE = 20; - static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48; - static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50; - static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11; - static constexpr uint16_t BUTTON_LABEL_SIZE = 40; - static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20; - static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFFFFFF; - static constexpr uint16_t BUTTON_WIDHT2 = 120; - static constexpr uint16_t BUTTON_HEIGHT2 = 60; - - // 字体大小 - static constexpr uint16_t PERCENT_FONT_SIZE = 25; + static constexpr uint16_t BUTTON_LABEL_SIZE = 30; + static constexpr uint16_t TESTBUTTON_X = 118; + static constexpr uint16_t TESTBUTTON_Y = 336; + static constexpr uint16_t BUTTON_WIDHT2 = 230; + static constexpr uint16_t BUTTON_HEIGHT2 = 80; + + // 标签设置 + static constexpr uint16_t PERCENT_X = 133; + static constexpr uint16_t PERCENT_Y = 103; + static constexpr uint16_t PERCENT_FONT_SIZE = 140; + static constexpr uint16_t TIMELABEL_X = 141; + static constexpr uint16_t TIMELABEL_Y = 270; + static constexpr uint16_t TIMELABEL_FONT_SIZE = 30; + static constexpr uint16_t TITLE_X = 161; + static constexpr uint16_t TITLE_Y = 55; + static constexpr uint16_t TITLE_FONT_SIZE = 28; static constexpr uint16_t MATH_ZERO = 0; - static BloodOxygenView *g_pMainView = nullptr; - static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = { - {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH}, - }; BloodOxygenView::BloodOxygenView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView"); - imageViewMain = nullptr; - imageViewProgress = nullptr; - group = nullptr; - percent = nullptr; - testButton = nullptr; - circleProgress = nullptr; - imageAnimator = nullptr; g_pMainView = this; - bloodbandoff = new BloodBandoffView(); - if (bloodbandoff == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail"); - } } BloodOxygenView::~BloodOxygenView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView"); - group->RemoveAll(); + BloodScrollView[BLOODVIEW]->RemoveAll(); + UIView::OnDragListener *draglistener = BloodScrollView[BLOODVIEW]->GetOnDragListener(); + if (draglistener != nullptr) + { + delete draglistener; + draglistener = nullptr; + } delete imageViewMain; - delete imageViewProgress; - delete group; + delete timeLabel; + delete titleLabel; delete testButton; delete percent; - delete circleProgress; - delete imageAnimator; delete bloodbandoff; + delete bloodcheck; + imageViewMain = nullptr; - imageViewProgress = nullptr; - group = nullptr; + titleLabel = nullptr; + timeLabel = nullptr; percent = nullptr; testButton = nullptr; - circleProgress = nullptr; - imageAnimator = nullptr; g_pMainView = nullptr; bloodbandoff = nullptr; + bloodcheck = nullptr; + delete BloodScrollView[BLOODVIEW]; + BloodScrollView[BLOODVIEW] = nullptr; } - BloodOxygenView *BloodOxygenView::GetInstance(void) { return g_pMainView; } - - UILabel *BloodOxygenView::GetPercent() - { - return percent; - } - - UIViewGroup *BloodOxygenView::GetBloodOxygenGroup() + void BloodOxygenView::Upspo2data() { - return group; + uint16_t spo2_ = BloodOxygenModel::GetInstance()->GetSPO2data(); + //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", spo2_); + std::string bloodoxygenStr = std::to_string(spo2_); + percent->SetText(bloodoxygenStr.c_str()); } - UILabelButton *BloodOxygenView::GetTestButton() + // 初始化标签 + bool BloodOxygenView::InitLabel() { - return testButton; - } - - UICircleProgress *BloodOxygenView::GetCircleProgress() - { - return circleProgress; + /* -------------------------------------------------------------------------- */ + percent = new UILabel(); + if (percent == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new percent fail"); + return false; + } + percent->SetPosition(PERCENT_X, PERCENT_Y); // widget's left position and top position + percent->Resize(200, 200); // widget's width and height + percent->SetViewId("label2"); // Set style + percent->SetStyle(STYLE_TEXT_FONT, PERCENT_FONT_SIZE); + spo2_ = BloodOxygenModel::GetInstance()->GetSPO2data(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", spo2_); + std::string bloodoxygenStr = std::to_string(spo2_); + percent->SetText(bloodoxygenStr.c_str()); + percent->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + percent->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + percent->SetRollSpeed(0); + percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE); + /* -------------------------------------------------------------------------- */ + timeLabel = new UILabel(); + if (timeLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new timeLabel fail"); + return false; + } + timeLabel->SetPosition(TIMELABEL_X, TIMELABEL_Y); // widget's left position and top position + timeLabel->Resize(185, 35); // widget's width and height + timeLabel->SetViewId("label1"); // Set style + timeLabel->SetStyle(STYLE_TEXT_FONT, TIMELABEL_FONT_SIZE); + timeLabel->SetText("20分钟前检测"); + timeLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + timeLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + timeLabel->SetRollSpeed(0); + timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TIMELABEL_FONT_SIZE); + /* -------------------------------------------------------------------------- */ + titleLabel = new UILabel(); + if (titleLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new titleLabel fail"); + return false; + } + titleLabel->SetPosition(TITLE_X, TITLE_Y); // widget's left position and top position + titleLabel->Resize(200, 90); // widget's width and height + titleLabel->SetViewId("label3"); // Set style + titleLabel->SetStyle(STYLE_TEXT_FONT, TITLE_FONT_SIZE); + titleLabel->SetText("血氧饱和度"); + titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titleLabel->SetRollSpeed(0); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLE_FONT_SIZE); + /* -------------------------------------------------------------------------- */ + return true; } - + // 创建标签按键 UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton"); @@ -184,16 +148,13 @@ namespace OHOS return nullptr; } btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2); + btn->SetStyle(STYLE_BACKGROUND_COLOR, 0xffcd492c); btn->SetText(title); - btn->SetTextColor(Color::Red()); + // btn->SetTextColor(Color::Red()); btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE); + btn->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); btn->SetAlign(TEXT_ALIGNMENT_CENTER); - btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED); - btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED); - btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE); - btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED); - btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED); - btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE); + btn->SetViewId("checkbegin"); UIView::OnClickListener *clickLeftListener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance(); if (clickLeftListener == nullptr) { @@ -203,193 +164,226 @@ namespace OHOS btn->SetOnClickListener(clickLeftListener); return btn; } - - bool BloodOxygenView::SetOnDragListener() + // 初始化背景 + bool BloodOxygenView::InitImageDisplay() { - UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BloodOxygenPresenter::GetInstance(); - if (dragListener == nullptr) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay"); + imageViewMain = new UIImageView(); + if (imageViewMain == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail"); return false; } - group->SetDraggable(true); - group->SetTouchable(true); - group->SetOnDragListener(dragListener); + imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset + char *image1imagesPath = "/user/res/Blood/beijing.bin"; + imageViewMain->SetSrc(image1imagesPath); return true; } - - UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const + // 初始化界面 + bool BloodOxygenView::InitBloodView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView"); - UIView *view = new UIView(); - if (view == nullptr) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitBloodView"); + BloodScrollView[BLOODVIEW] = new UIScrollView(); + if (BloodScrollView[BLOODVIEW] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail"); - return nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::BloodScrollView new fail!"); + return false; } - if (x > VIEW_MAX_X || x < VIEW_MIN_X) + BloodScrollView[BLOODVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + BloodScrollView[BLOODVIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + BloodScrollView[BLOODVIEW]->SetScrollBlankSize(35); + BloodScrollView[BLOODVIEW]->SetReboundSize(50); + BloodScrollView[BLOODVIEW]->SetDirection(1); + // 增加拖拽监听 + UIView::OnDragListener *draglistener = static_cast(new BloodOxygenPresenter()); + if (draglistener == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error"); - return nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::draglistener can not be nullptr!"); + return false; } - if (y < VIEW_MIN_Y || y > VIEW_MAX_Y) + BloodScrollView[BLOODVIEW]->SetOnDragListener(draglistener); + BloodScrollView[BLOODVIEW]->SetTouchable(true); + BloodScrollView[BLOODVIEW]->SetDraggable(true); + /* -------------------------------------------------------------------------- */ + if (InitImageDisplay() == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error"); - return nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay() fail!"); + return false; } - view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full); - view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity - view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value - view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full); - view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity - view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width - view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO); - view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO); - view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO); - view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO); - view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO); - view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO); - view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO); - view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO); - - view->SetPosition(x, VIEW_HEIGHT - y); - view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO); - view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset - view->Resize(VIEW_WIDTH, y); - return view; - } - - UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress"); - UICircleProgress *circle = new UICircleProgress(); - circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y, - CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT); - circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y); - circle->SetRadius(CIRCLE_PROGRESS_RADIUS); - circle->SetValue(CIRCLE_PROGRESS_VALUE); - circle->SetBackgroundStyle(STYLE_LINE_WIDTH, - circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH); - circle->SetForegroundStyle(STYLE_LINE_WIDTH, - circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH); - circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT); - circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP); - circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE); - circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE); - circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE); - circle->SetLineColor(Color::Black()); - - return circle; - } - - bool BloodOxygenView::InitImageDisplay() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay"); - imageViewMain = new UIImageView(); - if (imageViewMain == nullptr) + if (InitLabel() == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitLabel() fail!"); return false; } - imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset - imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH); - group->Add(imageViewMain); - - imageAnimator = new UIImageAnimatorView(); - if (imageAnimator == nullptr) + testButton = CreateAndSetUIButton("检测"); + if (testButton == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail"); return false; } - imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED); - imageAnimator->Start(); - imageAnimator->SetRepeat(true); - group->Add(imageAnimator); + /* -------------------------------------------------------------------------- */ + return true; + } - imageViewProgress = new UIImageView(); - if (imageViewProgress == nullptr) + // 1.跳转到血氧界面 + bool BloodOxygenView::ChangeBloodView(int16_t thisView) + { + if (BloodScrollView[thisView] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail"); - return false; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::ChangeBloodView"); + RootView::GetInstance()->Add(BloodScrollView[thisView]); } - imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 : offset - imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE); - group->Add(imageViewProgress); - return true; } - - void BloodOxygenView::OnStart() + // 2.跳转到佩戴界面 + bool BloodOxygenView::ChangeBandoffView(int16_t thisView) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart"); - View::OnStart(); - - group = new UIViewGroup(); - if (group == nullptr) + if (BloodScrollView[thisView] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::ChangeBandoffView"); + bloodbandoff = new BloodBandoffView(); + if (bloodbandoff == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView:: new scrollView[%d] fail", thisView); + return false; + } + BloodScrollView[thisView] = bloodbandoff->BloodBondoffViewInit(); + RootView::GetInstance()->Add(BloodScrollView[thisView]); } - group->SetPosition(MATH_ZERO, MATH_ZERO); - group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - - if (InitImageDisplay() == false) + return true; + } + // 3.跳转到检测界面 + bool BloodOxygenView::ChangeCheckView(int16_t thisView) + { + if (BloodScrollView[thisView] == nullptr) { - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::ChangeCheckView"); + bloodcheck = new BloodCheckView(); + if (bloodcheck == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView:: new scrollView[%d] fail", thisView); + return false; + } + BloodScrollView[thisView] = bloodcheck->BloodCheckViewInit(); + RootView::GetInstance()->Add(BloodScrollView[thisView]); } - - if (SetOnDragListener() == false) + return true; + } + // 4.跳转到检测失败界面 + bool BloodOxygenView::ChangeResultView(int16_t thisView) + { + if (BloodScrollView[thisView] == nullptr) { - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodResultView"); + bloodresult = new BloodResultView(); + if (bloodresult == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView:: new scrollView[%d] fail", thisView); + return false; + } + BloodScrollView[thisView] = bloodresult->BloodResultViewInit(); + RootView::GetInstance()->Add(BloodScrollView[thisView]); } - - circleProgress = CreateAndSetUICircleProgress(); - if (circleProgress == nullptr) + return true; + } + UIScrollView *BloodOxygenView::GetBloodScrollView(int ViewId) + { + if (BloodScrollView[ViewId] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail"); - return; + return nullptr; } - group->Add(circleProgress); + return BloodScrollView[ViewId]; + } + /* -------------------------------------------------------------------------- */ + // 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。 + struct BloodViewMapper + { + const int16_t viewId; + bool (BloodOxygenView::*func)(int16_t thisView); + }; - percent = new UILabel(); - if (percent == nullptr) + // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。 + static const BloodViewMapper ViewMapper[] = { + {BLOODVIEW, &BloodOxygenView::ChangeBloodView}, + {BLOODBANDVIEW, &BloodOxygenView::ChangeBandoffView}, + {BLOODCHECKVIEW, &BloodOxygenView::ChangeCheckView}, + {BLOODRESULT, &BloodOxygenView::ChangeResultView}, + }; + + // 3.根据传入的interface参数执行相应视图ID关联的成员函数。 + bool BloodOxygenView::ClickFunc(int16_t interface) + { + int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[BLOODVIEW]); + for (int i = 0; i < funcSize; i++) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail"); - return; + if (interface == ViewMapper[i].viewId) + { + bool jug = (this->*(ViewMapper[i].func))(interface); + if (jug == false) + { + return false; + } + return true; + } } - percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y, - VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT); - percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT); - percent->SetText("%97"); - percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE); - percent->SetTextColor(Color::Red()); - group->Add(percent); + return false; + } - testButton = CreateAndSetUIButton("测试"); - if (testButton == nullptr) + // 4.切换视图 + void BloodOxygenView::ChangeView(int16_t hideView, int16_t showView) + { + if (hideView > MAX_BLOODVIEW) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView:: BloodViewId Overstep ones bounds"); return; } - group->Add(testButton); - - if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) + BloodScrollView[hideView]->SetVisible(false); + ClickFunc(showView); + BloodScrollView[showView]->SetVisible(true); + Draw(); + } + /* -------------------------------------------------------------------------- */ + bool BloodOxygenView::SetOnDragListener() + { + UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BloodOxygenPresenter::GetInstance(); + if (dragListener == nullptr) { - testButton->SetTouchable(false); - percent->SetText(""); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail"); + return false; } + group->SetDraggable(true); + group->SetTouchable(true); + group->SetOnDragListener(dragListener); + return true; + } - BloodBandoffView::GetInstance()->CreateUIViewGroup(); - - RootView::GetInstance()->Add(group); - RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup()); - BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false); + void BloodOxygenView::OnStart() + { + 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"); + } } void BloodOxygenView::OnSetUpView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView"); View::OnSetUpView(); + if (BloodScrollView[BLOODVIEW] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BLOODVIEW:: OnSetUpView has nullptr"); + return; + } + BloodScrollView[BLOODVIEW]->Add(imageViewMain); + BloodScrollView[BLOODVIEW]->Add(percent); + BloodScrollView[BLOODVIEW]->Add(timeLabel); + BloodScrollView[BLOODVIEW]->Add(titleLabel); + BloodScrollView[BLOODVIEW]->Add(testButton); + RootView::GetInstance()->Add(BloodScrollView[BLOODVIEW]); Draw(); } @@ -402,6 +396,7 @@ namespace OHOS void BloodOxygenView::OnStop() { + display_api->set_screen_auto_off_timeout(display_time); // 恢复 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop"); View::OnStop(); RootView::GetInstance()->RemoveAll(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodResultView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodResultView.cpp new file mode 100644 index 000000000..2d107a620 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodResultView.cpp @@ -0,0 +1,248 @@ + + +#include "UiConfig.h" +#include "wearable_log.h" +#include "BloodResultView.h" +#include "BloodOxygenModel.h" +#include "ui_image_animator.h" +#include "BloodResultView.h" +namespace OHOS +{ + // 图片设置 + static constexpr uint16_t IMAGE_SIZE = 80; + static constexpr uint16_t IMAGE_X = 193; + static constexpr uint16_t IMAGE_Y = 111; + + // 按钮设置 + static constexpr uint16_t BUTTON_LABEL_SIZE = 26; + static constexpr uint16_t BUTTON_WIDHT = 230; + static constexpr uint16_t BUTTON_HEIGHT = 80; + static constexpr uint16_t ST_BUTTON_X = 118; + static constexpr uint16_t ST_BUTTON_Y = 334; + static constexpr uint16_t RE_BUTTON_X = 118; + static constexpr uint16_t RE_BUTTON_Y = 434; + + // 标签设置 + static constexpr uint16_t LABLE_FONT_SIZE = 30; + static constexpr uint16_t TITLE_POSITION_X = 149; + static constexpr uint16_t TITLE_POSITION_Y = 52; + static constexpr uint16_t label1_POSITION_X = 58; + static constexpr uint16_t label1_POSITION_Y = 208; + static constexpr uint16_t label2_POSITION_X = 38; + static constexpr uint16_t label2_POSITION_Y = 243; + static constexpr uint16_t LABEL3_POSITION_X = 143; + static constexpr uint16_t LABEL3_POSITION_Y = 278; + + static BloodResultView *g_pMainView = nullptr; + BloodResultView::BloodResultView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView"); + + g_pMainView = this; + } + + BloodResultView *BloodResultView::GetInstance(void) + { + return g_pMainView; + } + + BloodResultView::~BloodResultView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodResultView::~BloodResultView"); + BloodResultScrollView->RemoveAll(); + delete imageerror; + delete titlelabel; + delete label1; + delete label2; + delete label3; + delete ReButton; + delete StButton; + delete BloodResultScrollView; + + titlelabel = nullptr; + label1 = nullptr; + label2 = nullptr; + label3 = nullptr; + BloodResultScrollView = nullptr; + ReButton = nullptr; + StButton = nullptr; + g_pMainView = this; + } + // 初始化标签 + bool BloodResultView::InitLabel() + { + titlelabel = new UILabel(); + if (titlelabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel fail"); + return false; + } + titlelabel->SetPosition(149, 52); // widget's left position and top position + titlelabel->Resize(200, 60); // widget's width and height + titlelabel->SetViewId("label1"); // Set style + titlelabel->SetStyle(STYLE_TEXT_FONT, 28); + + // Set additional property + titlelabel->SetText("检测不到结果"); + titlelabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + titlelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titlelabel->SetRollSpeed(0); + titlelabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + /* -------------------------------------------------------------------------- */ + label1 = new UILabel(); + if (label1 == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel fail"); + return false; + } + label1->SetPosition(53, 208); // widget's left position and top position + label1->Resize(200, 60); // widget's width and height + label1->SetViewId("label4"); // Set style + label1->SetStyle(STYLE_TEXT_FONT, 30); + + label1->SetText("请确认已带上手表,并保持"); + label1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label1->SetRollSpeed(0); + label1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + /* -------------------------------------------------------------------------- */ + label2 = new UILabel(); + if (label2 == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel fail"); + return false; + } + label2->SetPosition(38, 243); // widget's left position and top position + label2->Resize(200, 60); // widget's width and height + label2->SetViewId("label5"); // Set style + label2->SetStyle(STYLE_TEXT_FONT, 30); + label2->SetText("静止,准备好后点击下方按钮"); + label2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label2->SetRollSpeed(0); + label2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + /* -------------------------------------------------------------------------- */ + label3 = new UILabel(); + if (label3 == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel fail"); + return false; + } + label3->SetPosition(143, 278); // widget's left position and top position + label3->Resize(200, 60); // widget's width and height + label3->SetViewId("label6"); // Set style + label3->SetStyle(STYLE_TEXT_FONT, 30); + label3->SetText("进行重新检测"); + label3->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label3->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label3->SetRollSpeed(0); + label3->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + return true; + } + // 初始化图片 + bool BloodResultView::InitImageDisplay() + { + imageerror = new UIImageView(); + if (imageerror == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitImageDisplay fail"); + return false; + } + imageerror->SetPosition(193, 111); // widget's left position and top position + imageerror->Resize(100, 100); // widget's width and height + imageerror->SetViewId("image1"); // Set style + char *image1imagesPath = "/user/res/Blood/Error.bin"; + imageerror->SetSrc(image1imagesPath); + return true; + } + UIScrollView *BloodResultView::BloodResultViewInit() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodResultView::CreateUIViewBloodResultScrollView"); + BloodResultScrollView = new UIScrollView(); + if (BloodResultScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new BloodResultScrollView fail"); + return nullptr; + } + BloodResultScrollView->SetPosition(0, 0); + BloodResultScrollView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + BloodResultScrollView->SetScrollBlankSize(35); + BloodResultScrollView->SetReboundSize(50); + BloodResultScrollView->SetDirection(1); + // 增加拖拽监听 + UIView::OnDragListener *draglistener = static_cast(new BloodOxygenPresenter()); + if (draglistener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::draglistener can not be nullptr!"); + return nullptr; + } + BloodResultScrollView->SetOnDragListener(draglistener); + BloodResultScrollView->SetTouchable(true); + BloodResultScrollView->SetDraggable(true); + /* -------------------------------------------------------------------------- */ + if (InitImageDisplay() == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nitImageDisplay fail"); + return nullptr; + } + if (InitLabel() == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLabel fail"); + return nullptr; + } + /* -------------------------------------------------------------------------- */ + ReButton = new UILabelButton(); + if (ReButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UILabelButton fail"); + return nullptr; + } + ReButton->SetPosition(118, 334); + ReButton->Resize(230, 80); + ReButton->SetText("重新检测"); + ReButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffFF8A36); + ReButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + ReButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + ReButton->SetViewId("ReCheck"); + UIView::OnClickListener *clickLeft1Listener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance(); + if (clickLeft1Listener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeft1Listener fail"); + return nullptr; + } + ReButton->SetOnClickListener(clickLeft1Listener); + /* -------------------------------------------------------------------------- */ + StButton = new UILabelButton(); + if (StButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UILabelButton fail"); + return nullptr; + } + StButton->SetPosition(118, 434); // widget's left position and top position + StButton->Resize(230, 80); // widget's width and height + StButton->SetText("停止检测"); + StButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + StButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + StButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + StButton->SetViewId("StCheck"); + UIView::OnClickListener *clickLeft2Listener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance(); + if (clickLeft2Listener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeft2Listener fail"); + return nullptr; + } + StButton->SetOnClickListener(clickLeft2Listener); + /* -------------------------------------------------------------------------- */ + BloodResultScrollView->Add(imageerror); + BloodResultScrollView->Add(titlelabel); + BloodResultScrollView->Add(label1); + BloodResultScrollView->Add(label2); + BloodResultScrollView->Add(label3); + BloodResultScrollView->Add(ReButton); + BloodResultScrollView->Add(StButton); + /* -------------------------------------------------------------------------- */ + return BloodResultScrollView; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodCardView.h b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/include/BloodCardView.h similarity index 94% rename from code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodCardView.h rename to code/sdk/application/wearable/fd230app/nativeui/heart_blood/include/BloodCardView.h index ed0b1a6dc..3e0e1a2d7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodCardView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/include/BloodCardView.h @@ -13,8 +13,6 @@ #include "components/ui_label_button_ext.h" #include "components/ui_card_page.h" - - namespace OHOS { @@ -51,6 +49,8 @@ namespace OHOS UILabel *bloodLabel = nullptr; UILabel *timeLabel = nullptr; bool viewiInitStatus{false}; + + int bloodoxygen; }; } // namespace OHOS #endif // Blood_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodNoteView.h b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/include/HeartCardView.h similarity index 100% rename from code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodNoteView.h rename to code/sdk/application/wearable/fd230app/nativeui/heart_blood/include/HeartCardView.h diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/src/BloodCardView.cpp similarity index 79% rename from code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodCardView.cpp rename to code/sdk/application/wearable/fd230app/nativeui/heart_blood/src/BloodCardView.cpp index 9b49a7b09..0551547a8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/blood/src/BloodCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/src/BloodCardView.cpp @@ -1,5 +1,5 @@ -#include "blood/include/BloodCardView.h" +#include "heart_blood/include/BloodCardView.h" #include "common/image_cache_manager.h" #include "UiConfig.h" @@ -8,7 +8,8 @@ #include "components/ui_button.h" #include "MainViewSample.h" #include "components/ui_view_group.h" - +#include "DialModelSPO2.h" +#include "DialModelHeartRate.h" namespace OHOS { static BloodCardView *g_pBloodCardView{nullptr}; @@ -38,29 +39,22 @@ namespace OHOS */ bool BloodCardView::AddButton() { +#if 0 // Add Button to App if (warnButton == nullptr) { warnButton = new UIButton(); } - warnButton->SetPosition(300, 57); // widget's left position and top position + warnButton->SetPosition(300, 102); // widget's left position and top position warnButton->Resize(26, 26); // widget's width and height warnButton->SetViewId(WARNING); // Set style warnButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); warnButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - - // Set additional property char *button1defaultImgSrc = "/user/res/Blood/Vector.bin"; char *button1triggeredImgSrc = nullptr; warnButton->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); warnButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - - // Add the CallBack about events - // UIView::OnClickListener *button1Click = static_cast(BloodPresenter::GetInstance()); - // warnButton->SetOnClickListener(button1Click); - // Add to rootView Add(warnButton); - // Add LabelButtonExt to App if (monitorButton == nullptr) { @@ -70,15 +64,11 @@ namespace OHOS monitorButton->Resize(230, 80); // widget's width and height monitorButton->SetViewId(CHECK); // Set style monitorButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffcd492c); - - // Set additional property monitorButton->SetText("检测"); monitorButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); monitorButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - - // UIView::OnClickListener *labelButton1Click = static_cast(BloodPresenter::GetInstance()); - // monitorButton->SetOnClickListener(labelButton1Click); Add(monitorButton); +#endif return true; } /*** @@ -92,18 +82,21 @@ namespace OHOS { bloodLabel = new UILabel(); } - bloodLabel->SetPosition(157, 105); // widget's left position and top position - bloodLabel->Resize(200, 60); // widget's width and height - bloodLabel->SetViewId("label2"); // Set style - bloodLabel->SetStyle(STYLE_TEXT_FONT, 140); + bloodLabel->SetPosition(83, 108); // widget's left position and top position + bloodLabel->Resize(300, 250); // widget's width and height + bloodLabel->SetViewId("label2"); // Set style + bloodLabel->SetStyle(STYLE_TEXT_FONT, 150); // Set additional property - int bloodoxygen = 98; - bloodLabel->SetText(std::to_string(bloodoxygen).c_str()); - bloodLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + // bloodoxygen =DialModelHeartRate::GetInstance()->GetHeartData(); + bloodoxygen = 97; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", bloodoxygen); + std::string bloodoxygenStr = std::to_string(bloodoxygen); + bloodLabel->SetText(bloodoxygenStr.c_str()); + bloodLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); bloodLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); bloodLabel->SetRollSpeed(0); - bloodLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 140); + bloodLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 150); // Add to rootView Add(bloodLabel); @@ -113,7 +106,7 @@ namespace OHOS { timeLabel = new UILabel(); } - timeLabel->SetPosition(141, 263); // widget's left position and top position + timeLabel->SetPosition(140, 370); // widget's left position and top position timeLabel->Resize(185, 35); // widget's width and height timeLabel->SetViewId("label1"); // Set style timeLabel->SetStyle(STYLE_TEXT_FONT, 30); @@ -133,17 +126,17 @@ namespace OHOS { titleLabel = new UILabel(); } - titleLabel->SetPosition(143, 52); // widget's left position and top position - titleLabel->Resize(200, 60); // widget's width and height + titleLabel->SetPosition(158, 70); // widget's left position and top position + titleLabel->Resize(200, 90); // widget's width and height titleLabel->SetViewId("label3"); // Set style - titleLabel->SetStyle(STYLE_TEXT_FONT, 30); + titleLabel->SetStyle(STYLE_TEXT_FONT, 28); // Set additional property titleLabel->SetText("血氧饱和度"); titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); titleLabel->SetRollSpeed(0); - titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); // Add to rootView Add(titleLabel); diff --git a/code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodOxygenView.h b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/src/HeartCardView.cpp similarity index 100% rename from code/sdk/application/wearable/fd230app/nativeui/blood/include/BloodOxygenView.h rename to code/sdk/application/wearable/fd230app/nativeui/heart_blood/src/HeartCardView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h index 2e9173a7a..64d7b4e30 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h @@ -33,7 +33,7 @@ #include "PullUpDownView.h" #include "components/ui_cross_view.h" -#include "blood/include/BloodCardView.h" +#include "heart_blood/include/BloodCardView.h" #include "traing/include/TraingView.h" #include "ApplistCardView.h" #include "weather/include/WeatherControlView.h" diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h index 9fd090920..989bde908 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h @@ -10,21 +10,24 @@ #include "DialBaseModel.h" -namespace OHOS { -class DialModelHeartRate : public DialBaseModel { -public: - DialModelHeartRate() {} - virtual ~DialModelHeartRate() {} - static DialModelHeartRate* GetInstance() +namespace OHOS +{ + class DialModelHeartRate : public DialBaseModel { - static DialModelHeartRate instance; - return &instance; - } - bool GetDialFloatData(DialDataType& type, float& out) override; - void UpdateHeartRate(int16_t heartRate); + public: + DialModelHeartRate() {} + virtual ~DialModelHeartRate() {} + static DialModelHeartRate *GetInstance() + { + static DialModelHeartRate instance; + return &instance; + } + bool GetDialFloatData(DialDataType &type, float &out) override; + void UpdateHeartRate(int16_t heartRate); + int GetHeartData(void); -private: - float heartRate_ = 67.0; // 67.0: default heart value as reference -}; + private: + float heartRate_ = 67.0; // 67.0: default heart value as reference + }; } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSPO2.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSPO2.h index 0da9a5278..da9662f2a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSPO2.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSPO2.h @@ -24,6 +24,7 @@ namespace OHOS } bool GetDialFloatData(DialDataType &type, float &out) override; void UpdateSPO2(int16_t SPO2); + int GetSPO2Data(); private: float SPO2_ = 97.0; // 97.0: default SPO2 value as reference diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h index c2af34466..2e9878b15 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h @@ -7,17 +7,19 @@ #ifndef ON_DIAL_DATA_UPDATE_LISTENER_H #define ON_DIAL_DATA_UPDATE_LISTENER_H - +#include #include "DialDataBase.h" -namespace OHOS { -class OnDialDataUpdateListener : public HeapBase { -public: - OnDialDataUpdateListener() {} - virtual ~OnDialDataUpdateListener() {} - virtual void OnDialFloatDataUpdate(DialDataType type, float data) {} - virtual void OnDialFloatDataUpdate(DialDataType type, const float* data, uint16_t num) {} - virtual void OnDialTextDataUpdate(DialDataType type, const std::string* data, uint16_t num) {} -}; +namespace OHOS +{ + class OnDialDataUpdateListener : public HeapBase + { + public: + OnDialDataUpdateListener() {} + virtual ~OnDialDataUpdateListener() {} + virtual void OnDialFloatDataUpdate(DialDataType type, float data) {} + virtual void OnDialFloatDataUpdate(DialDataType type, const float *data, uint16_t num) {} + virtual void OnDialTextDataUpdate(DialDataType type, const std::string *data, uint16_t num) {} + }; } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp index c738b4dbb..184cd2c8d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp @@ -29,4 +29,11 @@ namespace OHOS onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_HEART_RATE, heartRate_); } } + + int DialModelHeartRate::GetHeartData() + { + // Assuming SPO2_ is a float member variable + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRate_ %f", heartRate_); + return static_cast(heartRate_); + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSPO2.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSPO2.cpp index 006091642..1a0821be9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSPO2.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSPO2.cpp @@ -7,6 +7,7 @@ #include "RegisterDialModel.h" #include "DialModelSPO2.h" +#include "wearable_log.h" REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_SPO2, OHOS::DialModelSPO2::GetInstance()); @@ -27,4 +28,12 @@ namespace OHOS onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_SPO2, SPO2_); } } + + int DialModelSPO2::GetSPO2Data() + { + // Assuming SPO2_ is a float member variable + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %f", SPO2_); + return static_cast(SPO2_); + } + } diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp index 3316e9661..dbb6bfae7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp @@ -29,6 +29,7 @@ #include "DialBoxProgressView.h" #include "DialArcProgressView.h" #include "DialArcLabelView.h" +#include "wearable_log.h" namespace OHOS { DialBinParser::DialBinParser() @@ -114,7 +115,6 @@ int32_t DialBinParser::ParseDialHeader(FILE* file) dialGroup_->SetHeight(dialHeader->height); dialGroup_->SetPeriod(1000 / dialHeader->freq); // 1000: ms imageOffset_ = dialHeader->imageOffset; - uint8_t* viewType = static_cast(MallocAndReadBuf(file, (sizeof(uint8_t) * dialHeader->dialViewCount))); if (viewType == nullptr) { UIFree(dialHeader); @@ -131,7 +131,15 @@ int32_t DialBinParser::ParseDialHeader(FILE* file) } } } - + /* -------------------------------------------------------------------------- */ + #if 0 + uint32_t resId = dialHeader->previewImgId | dirId_; + uint32_t curReadPt = ftell(file); + ImageInfo* info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file_, file, false, imageOffset_); + fseek(file, curReadPt, SEEK_SET); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "previewImgId %p %s", resId,info); + #endif + /* -------------------------------------------------------------------------- */ UIFree(viewType); UIFree(dialHeader); return 0; @@ -162,6 +170,7 @@ int32_t DialBinParser::ParserDialStaticImg(FILE* fp) return -1; } fseek(fp, curReadPt, SEEK_SET); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ParserDialStaticImg %s %p", info,resId); view->SetSrc(info); dialGroup_->AddView(view); diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h index 2cd1305d3..7526df3fb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h @@ -55,6 +55,7 @@ private: std::string file_; uint32_t dirId_ = 0xfef << 20; uint32_t imageOffset_ = 0; + uint32_t pre_ = 0; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp b/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp index 315e0343a..16fc77fe1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp @@ -24,7 +24,7 @@ uint16_t ignore_slice_ids[] = { VIEW_UISAMPLE, VIEW_BLOODOXY,//血氧功能 #ifdef SUPPORT_ALIPAY_SEC - // VIEW_MAIN_ALIPAY, + VIEW_MAIN_ALIPAY, #endif }; diff --git a/code/sdk/application/wearable/service/msg_center/CMakeLists.txt b/code/sdk/application/wearable/service/msg_center/CMakeLists.txt index 29fd7118b..f7a7eb6ff 100755 --- a/code/sdk/application/wearable/service/msg_center/CMakeLists.txt +++ b/code/sdk/application/wearable/service/msg_center/CMakeLists.txt @@ -12,6 +12,7 @@ set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/callerlog/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/phoneservice/include ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/main/include/dial + ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/bloodoxygen/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/main/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/player/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/bluetooth/include @@ -103,6 +104,7 @@ set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/phoneservice/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/main/include ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/main/include/dial + ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/bloodoxygen/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/player/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/bluetooth/include ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativelauncher/include diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index e9b5b5a8e..9c66c619b 100755 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -19,6 +19,7 @@ #include "DialModelCharge.h" #include "DialModelHeartRate.h" #include "DialModelSPO2.h" +#include "BloodOxygenModel.h" #include "ppg_service.h" #include "CallerLogModel.h" #include "notification_manager.h" @@ -220,6 +221,7 @@ void MsgCenterNotifySPO2hProc(const Topic topic, Request* req) { u_int8_t sp02 = *((u_int8_t*)(req->data)); // 进行类型转换 DialModelSPO2::GetInstance()->UpdateSPO2(sp02); + BloodOxygenModel::GetInstance()->UpSPO2data(sp02); } } //穿戴状态 @@ -240,6 +242,7 @@ void MsgCenterNotifyHeartRateProc(const Topic topic, Request* req) if (topic == TOPIC_EVENT_HEARTRATE_UPDATA) { u_int8_t heart = *((u_int8_t*)(req->data)); // 进行类型转换 + //通知对应信息进行更新 DialModelHeartRate::GetInstance()->UpdateHeartRate(heart); } } diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_HEART.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_HEART.bin new file mode 100644 index 000000000..5c0e448a5 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_HEART.bin differ