${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
${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
{
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, // 闹铃界面
VIEW_CLASSIC_BLUETOOTH, // 经典蓝牙
VIEW_CALLER_LOG, // 通话记录界面
VIEW_INCOMING_CALL, // 来电界面
- VIEW_BLOODOXY, // 血氧饱和度界面
VIEW_COMPASS, // 指南针界面
VIEW_CONNECT_PHONE, // 连接手机界面
VIEW_INDOORWALK, // 室内步行
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, // 语音助手界面(暂时不用)
VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
VIEW_EXTERN_APP = 0xFFFE, // 三方应用
VIEW_INVALIDE_APP = 0xFFFF,
-} AppViewId;
+}
+AppViewId;
/*
* Slice页面优先级,越小优先级越高
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";
/* --------------------------------- 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"; // 指南针
#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"
void NativeLauncher::InitMainBloodOxyView(void)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainBloodOxyView");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainBloodOxyView");
SliceProxy *bloodOxygenView = new AbilitySliceProxy<BloodOxygenView, BloodOxygenPresenter>;
if (bloodOxygenView == nullptr)
{
{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},
#include "BaseView.h"
#include "View.h"
#include "ohos_types.h"
-
+#include "components/ui_scroll_view.h"
namespace OHOS
{
class BloodBandoffView
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;
--- /dev/null
+/*
+ * 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<BloodOxygenPresenter>
+ {
+ 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
#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
#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<BloodOxygenView>,
public UIView::OnClickListener,
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; // 增加按键事件
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;
};
}
#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<BloodOxygenPresenter>
+ {
+ public:
+ BloodOxygenView();
+ virtual ~BloodOxygenView();
-namespace OHOS {
-class BloodOxygenView : public View<BloodOxygenPresenter> {
-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
--- /dev/null
+/*
+ * 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<BloodOxygenPresenter>
+ {
+ 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
-/*
- * 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
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");
label = nullptr;
imageView = nullptr;
- group = nullptr;
+ BloodBandoffScrollView = nullptr;
imageAnimator = nullptr;
g_pMainView = this;
}
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;
}
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;
}
}
--- /dev/null
+
+
+#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;
+ }
+}
*/
#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)
return BandoffView;
}
+ bool BloodOxygenModel::GetBloodCheckViewStatus(void)
+ {
+ return CheckView;
+ }
+
void BloodOxygenModel::SetBloodBandoffViewStatus(bool bandoffViewStatus)
{
BandoffView = bandoffViewStatus;
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;
#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"
#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()
{
Presenter<BloodOxygenView>::OnStart();
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start ");
-#if 0
+#if BLOODKEYABLE
if (keyActListenr == nullptr)
{
keyActListenr = new KeyInputListener();
}
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);
}
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);
}
}
}
#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");
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)
{
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<UIView::OnDragListener *>(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<BloodOxygenPresenter>::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<BloodOxygenPresenter>::OnStart();
+ if (!InitBloodView())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitBloodView fail");
+ }
}
void BloodOxygenView::OnSetUpView()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
View<BloodOxygenPresenter>::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();
}
void BloodOxygenView::OnStop()
{
+ display_api->set_screen_auto_off_timeout(display_time); // 恢复
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
View<BloodOxygenPresenter>::OnStop();
RootView::GetInstance()->RemoveAll();
--- /dev/null
+
+
+#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<UIView::OnDragListener *>(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;
+ }
+}
#include "components/ui_label_button_ext.h"\r
#include "components/ui_card_page.h"\r
\r
-\r
-\r
namespace OHOS\r
{\r
\r
UILabel *bloodLabel = nullptr;\r
UILabel *timeLabel = nullptr;\r
bool viewiInitStatus{false};\r
+\r
+ int bloodoxygen;\r
};\r
} // namespace OHOS\r
#endif // Blood_PRESENTER_H\r
\r
-#include "blood/include/BloodCardView.h"\r
+#include "heart_blood/include/BloodCardView.h"\r
\r
#include "common/image_cache_manager.h"\r
#include "UiConfig.h"\r
#include "components/ui_button.h"\r
#include "MainViewSample.h"\r
#include "components/ui_view_group.h"\r
-\r
+#include "DialModelSPO2.h"\r
+#include "DialModelHeartRate.h"\r
namespace OHOS\r
{\r
static BloodCardView *g_pBloodCardView{nullptr};\r
*/\r
bool BloodCardView::AddButton()\r
{\r
+#if 0\r
// Add Button to App\r
if (warnButton == nullptr)\r
{\r
warnButton = new UIButton();\r
}\r
- warnButton->SetPosition(300, 57); // widget's left position and top position\r
+ warnButton->SetPosition(300, 102); // widget's left position and top position\r
warnButton->Resize(26, 26); // widget's width and height\r
warnButton->SetViewId(WARNING); // Set style\r
warnButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
warnButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
- // Set additional property\r
char *button1defaultImgSrc = "/user/res/Blood/Vector.bin";\r
char *button1triggeredImgSrc = nullptr;\r
warnButton->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
warnButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- // Add the CallBack about events\r
- // UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(BloodPresenter::GetInstance());\r
- // warnButton->SetOnClickListener(button1Click);\r
- // Add to rootView\r
Add(warnButton);\r
-\r
// Add LabelButtonExt to App\r
if (monitorButton == nullptr)\r
{\r
monitorButton->Resize(230, 80); // widget's width and height\r
monitorButton->SetViewId(CHECK); // Set style\r
monitorButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffcd492c);\r
-\r
- // Set additional property\r
monitorButton->SetText("检测");\r
monitorButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
monitorButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- // UIView::OnClickListener *labelButton1Click = static_cast<UIView::OnClickListener *>(BloodPresenter::GetInstance());\r
- // monitorButton->SetOnClickListener(labelButton1Click);\r
Add(monitorButton);\r
+#endif\r
return true;\r
}\r
/***\r
{\r
bloodLabel = new UILabel();\r
}\r
- bloodLabel->SetPosition(157, 105); // widget's left position and top position\r
- bloodLabel->Resize(200, 60); // widget's width and height\r
- bloodLabel->SetViewId("label2"); // Set style\r
- bloodLabel->SetStyle(STYLE_TEXT_FONT, 140);\r
+ bloodLabel->SetPosition(83, 108); // widget's left position and top position\r
+ bloodLabel->Resize(300, 250); // widget's width and height\r
+ bloodLabel->SetViewId("label2"); // Set style\r
+ bloodLabel->SetStyle(STYLE_TEXT_FONT, 150);\r
\r
// Set additional property\r
- int bloodoxygen = 98;\r
- bloodLabel->SetText(std::to_string(bloodoxygen).c_str());\r
- bloodLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ // bloodoxygen =DialModelHeartRate::GetInstance()->GetHeartData();\r
+ bloodoxygen = 97;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSPO2Data %d", bloodoxygen);\r
+ std::string bloodoxygenStr = std::to_string(bloodoxygen);\r
+ bloodLabel->SetText(bloodoxygenStr.c_str());\r
+ bloodLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
bloodLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
bloodLabel->SetRollSpeed(0);\r
- bloodLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 140);\r
+ bloodLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 150);\r
\r
// Add to rootView\r
Add(bloodLabel);\r
{\r
timeLabel = new UILabel();\r
}\r
- timeLabel->SetPosition(141, 263); // widget's left position and top position\r
+ timeLabel->SetPosition(140, 370); // widget's left position and top position\r
timeLabel->Resize(185, 35); // widget's width and height\r
timeLabel->SetViewId("label1"); // Set style\r
timeLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
{\r
titleLabel = new UILabel();\r
}\r
- titleLabel->SetPosition(143, 52); // widget's left position and top position\r
- titleLabel->Resize(200, 60); // widget's width and height\r
+ titleLabel->SetPosition(158, 70); // widget's left position and top position\r
+ titleLabel->Resize(200, 90); // widget's width and height\r
titleLabel->SetViewId("label3"); // Set style\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+ titleLabel->SetStyle(STYLE_TEXT_FONT, 28);\r
\r
// Set additional property\r
titleLabel->SetText("血氧饱和度");\r
titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
titleLabel->SetRollSpeed(0);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);\r
\r
// Add to rootView\r
Add(titleLabel);\r
#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"
#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
}
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
#ifndef ON_DIAL_DATA_UPDATE_LISTENER_H
#define ON_DIAL_DATA_UPDATE_LISTENER_H
-
+#include <string>
#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
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<int>(heartRate_);
+ }
}
#include "RegisterDialModel.h"
#include "DialModelSPO2.h"
+#include "wearable_log.h"
REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_SPO2, OHOS::DialModelSPO2::GetInstance());
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<int>(SPO2_);
+ }
+
}
#include "DialBoxProgressView.h"\r
#include "DialArcProgressView.h"\r
#include "DialArcLabelView.h"\r
+#include "wearable_log.h"\r
\r
namespace OHOS {\r
DialBinParser::DialBinParser()\r
dialGroup_->SetHeight(dialHeader->height);\r
dialGroup_->SetPeriod(1000 / dialHeader->freq); // 1000: ms\r
imageOffset_ = dialHeader->imageOffset;\r
-\r
uint8_t* viewType = static_cast<uint8_t*>(MallocAndReadBuf(file, (sizeof(uint8_t) * dialHeader->dialViewCount)));\r
if (viewType == nullptr) {\r
UIFree(dialHeader);\r
}\r
}\r
}\r
-\r
+ /* -------------------------------------------------------------------------- */\r
+ #if 0\r
+ uint32_t resId = dialHeader->previewImgId | dirId_;\r
+ uint32_t curReadPt = ftell(file);\r
+ ImageInfo* info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file_, file, false, imageOffset_);\r
+ fseek(file, curReadPt, SEEK_SET);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "previewImgId %p %s", resId,info);\r
+ #endif\r
+ /* -------------------------------------------------------------------------- */\r
UIFree(viewType);\r
UIFree(dialHeader);\r
return 0;\r
return -1;\r
}\r
fseek(fp, curReadPt, SEEK_SET);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ParserDialStaticImg %s %p", info,resId);\r
view->SetSrc(info);\r
dialGroup_->AddView(view);\r
\r
std::string file_;\r
uint32_t dirId_ = 0xfef << 20;\r
uint32_t imageOffset_ = 0;\r
+ uint32_t pre_ = 0;\r
};\r
}\r
#endif
\ No newline at end of file
VIEW_UISAMPLE,
VIEW_BLOODOXY,//血氧功能
#ifdef SUPPORT_ALIPAY_SEC
- // VIEW_MAIN_ALIPAY,
+ VIEW_MAIN_ALIPAY,
#endif
};
${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
${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
#include "DialModelCharge.h"
#include "DialModelHeartRate.h"
#include "DialModelSPO2.h"
+#include "BloodOxygenModel.h"
#include "ppg_service.h"
#include "CallerLogModel.h"
#include "notification_manager.h"
{
u_int8_t sp02 = *((u_int8_t*)(req->data)); // 进行类型转换
DialModelSPO2::GetInstance()->UpdateSPO2(sp02);
+ BloodOxygenModel::GetInstance()->UpSPO2data(sp02);
}
}
//穿戴状态
if (topic == TOPIC_EVENT_HEARTRATE_UPDATA)
{
u_int8_t heart = *((u_int8_t*)(req->data)); // 进行类型转换
+ //通知对应信息进行更新
DialModelHeartRate::GetInstance()->UpdateHeartRate(heart);
}
}