${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
VIEW_HEART_RESULT, // 心率结果界面
VIEW_HEART_CHECK, // 心率检测界面
VIEW_HEART, // 心率监测
- VIEW_HEART_CHART, // 心率曲线图检测
VIEW_SAVEELE, // 省电模式
VIEW_SAVEBAT, // 省电模式界面
VIEW_TAKEPHOTOS, // 拍照界面
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.
--- /dev/null
+
+#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
--- /dev/null
+#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
{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
ID++;
}
/*判断是否为当前表盘 如果是自定义表盘 需要更新*/
- if (currentDialID == ID && ID >=5) {
+ if (currentDialID == ID && ID >= 5) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
"UpdateDialSetting: Current dial cannot be updated");
return;
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 {