From b63ef1a5f0608f8a6abfaefb4c1283b76b3e77ad Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 26 Oct 2024 16:23:17 +0800 Subject: [PATCH] =?utf8?q?=E8=A1=A8=E7=9B=98=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?utf8?q?=E9=95=9C=E5=BD=B1=E8=A1=8C=E8=80=85=E6=96=B0=E6=95=B0=E6=8D=AE?= =?utf8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/fd230app/CMakeLists.txt | 3 +- .../nativelauncher/include/AppViewIDs.h | 4 +- .../main/include/dial/DialModelSecondMapper.h | 25 ++++++++++ .../main/src/dial/DialModelSecondMapper.cpp | 50 +++++++++++++++++++ .../nativeui/set_dial/src/SetDialModel.cpp | 18 +++---- 5 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSecondMapper.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSecondMapper.cpp diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index fc4907196..0fa4f00ca 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -180,7 +180,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelWeekNum.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelDateWeekStr.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelStepgoal.cpp - + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelSecondMapper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelPowerMapper.cpp #exception handling ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/CheckAbnormalView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/CheckAbnormalPresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 36d73cbbc..22cdc3eb6 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -82,7 +82,6 @@ typedef enum : uint16_t VIEW_HEART_RESULT, // 心率结果界面 VIEW_HEART_CHECK, // 心率检测界面 VIEW_HEART, // 心率监测 - VIEW_HEART_CHART, // 心率曲线图检测 VIEW_SAVEELE, // 省电模式 VIEW_SAVEBAT, // 省电模式界面 VIEW_TAKEPHOTOS, // 拍照界面 @@ -135,12 +134,13 @@ typedef enum : uint16_t VIEW_ASSISTANT, // 智能助手 /*表盘功能相关VIEW_ID 请勿移动 请勿在下方增加slice*/ VIEW_DIAL_FUN_ID = 200, - VIEW_GOAL, // 每日目标 + VIEW_GOAL, // 步数 VIEW_WEATHER, // 天气 VIEW_AI_VOICE,// AI Voice(人工智能语音) #ifdef SUPPORT_ALIPAY_SEC VIEW_MAIN_ALIPAY,//支付宝 #endif + VIEW_HEART_CHART,// 心率曲线图检测 VIEW_ADD_NEW_ID = 250, /* -------------------------------------------------------------------------- */ VIEW_MAX_INTER_APP, // 在此之前添加native应用ID. diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSecondMapper.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSecondMapper.h new file mode 100644 index 000000000..0d6edb272 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSecondMapper.h @@ -0,0 +1,25 @@ + +#ifndef DIAL_MODEL_SecondMapper_H +#define DIAL_MODEL_SecondMapper_H + +#include "DialBaseModel.h" + +namespace OHOS { +class DialModelSecondMapper : public DialBaseModel { +public: + DialModelSecondMapper() {} + ~DialModelSecondMapper() override {} + static DialModelSecondMapper *GetInstance() { + static DialModelSecondMapper instance; + return &instance; + } + bool GetDialFloatData(DialDataType &type, float &out) override; + void UpdateSecondMapper(); + float CalculateMappedValue(int min, int sencond); + +private: + struct tm tblock_; + uint8_t secondmapper_; +}; +} // namespace OHOS +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSecondMapper.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSecondMapper.cpp new file mode 100644 index 000000000..24ea85304 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSecondMapper.cpp @@ -0,0 +1,50 @@ +#include "DialModelSecondMapper.h" +#include "RegisterDialModel.h" +#include "custom_runtime.h" +#include +#include +#include +#include + +// 注册模块 +REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_SECOND_MAPPER, + OHOS::DialModelSecondMapper::GetInstance()); + +namespace OHOS { + +bool DialModelSecondMapper::GetDialFloatData(DialDataType &type, float &out) { + + // (void)type; + + struct timeval tv; + gettimeofday(&tv, NULL); + // 获取当前时间并转换为当地时间 + localtime_r(&tv.tv_sec, &tblock_); + + // 获取当前的分钟 + // int min = tblock_.tm_min; + int sencond = tblock_.tm_sec; + + // 根据分钟奇偶性计算映射值 + float mappedValue = static_cast(sencond) / 59.0f; + + // 使用stringstream保留两位小数 + std::stringstream ss; + ss << std::fixed << std::setprecision(3) << mappedValue; + ss >> out; + + return true; +} + +// 提取计算映射值的逻辑到单独函数,根据奇偶性传入不同参数进行计算 +float DialModelSecondMapper::CalculateMappedValue(int min, int sencond) { + if (min % 2 == 0) { + // 偶数分钟:1 -> 0 + return 1.0f - (static_cast(sencond) / 59.0f); + } else { + // 奇数分钟:0 -> 1 + return static_cast(sencond) / 59.0f; + } +} + +} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp index df311d1fd..8baa3051c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp @@ -37,13 +37,10 @@ std::unordered_map registeredDials{ {DEFAULT_DIAL_ID_0, "KUMI"}, // 为了预防显示 {DEFAULT_DIAL_ID, "obsidianrhythm"}, // 默认表盘修改为 黑耀律动 #endif - {DEFAULT_DIAL_ID_1, "satellite"}, // 卫星表盘 - {DEFAULT_DIAL_ID_2, "birdie"}, // 飞鸟表盘 - {DEFAULT_DIAL_ID_3, "dawninsight"}, // 晨曦智影 - /* - TODO:增加表盘 - {MAX_DEFAULT_DIAL_ID, "kumi_point"}, // kumi指针表盘 - */ + {DEFAULT_DIAL_ID_1, "satellite"}, // 卫星表盘 + {DEFAULT_DIAL_ID_2, "birdie"}, // 飞鸟表盘 + {DEFAULT_DIAL_ID_3, "dawninsight"}, // 晨曦智影 + {MAX_DEFAULT_DIAL_ID, "dawninsight"}, // 镜影行者 }; // 表盘市场UID 对应表盘name @@ -408,7 +405,7 @@ void SetDialModel::UpdateDialSetting(uint16_t ID) { ID++; } /*判断是否为当前表盘 如果是自定义表盘 需要更新*/ - if (currentDialID == ID && ID >=5) { + if (currentDialID == ID && ID >= 5) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateDialSetting: Current dial cannot be updated"); return; @@ -515,12 +512,11 @@ void SetDialModel::LoadAllDialFromDefult(void) { for (const auto &dialName : defaultDials) { std::string fullDialName = dialName + ".bin"; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Checking for dial: %s", - fullDialName.c_str()); + fullDialName.c_str()); if (availableDials.count(fullDialName)) { SetDialInfo dialInfo{0}; - int ret = ParseDialHeader(DEFULTDIAL, fullDialName, - dialInfo); + int ret = ParseDialHeader(DEFULTDIAL, fullDialName, dialInfo); if (ret == 0) { dialInfoList.push_back(dialInfo); } else { -- 2.17.1