表盘:增加镜影行者新数据结构
authorCaisking <3449750381@qq.com>
Sat, 26 Oct 2024 08:23:17 +0000 (16:23 +0800)
committeraliyun:aliyun0384013184_1JeGs <3449750381@qq.com>
Sat, 26 Oct 2024 09:05:44 +0000 (09:05 +0000)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSecondMapper.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSecondMapper.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp

index fc49071..0fa4f00 100644 (file)
@@ -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
index 36d73cb..22cdc3e 100644 (file)
@@ -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,    // æ¯\8fæ\97¥ç\9b®æ \87
+    VIEW_GOAL,    // æ­¥æ\95°
     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 (file)
index 0000000..0d6edb2
--- /dev/null
@@ -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 (file)
index 0000000..24ea853
--- /dev/null
@@ -0,0 +1,50 @@
+#include "DialModelSecondMapper.h"
+#include "RegisterDialModel.h"
+#include "custom_runtime.h"
+#include <ctime>
+#include <iomanip>
+#include <sstream>
+#include <sys/time.h>
+
+// 注册模块
+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<float>(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<float>(sencond) / 59.0f);
+  } else {
+    // 奇数分钟:0 -> 1
+    return static_cast<float>(sencond) / 59.0f;
+  }
+}
+
+} // namespace OHOS
index df311d1..8baa305 100644 (file)
@@ -37,13 +37,10 @@ std::unordered_map<uint16_t, std::string> 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 {