From 13d342bafc56c689618ba09c12e16abc94de2f15 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 18 Mar 2026 16:20:58 +0800 Subject: [PATCH] =?utf8?q?=E8=A7=A3=E5=86=B3=E8=AE=A1=E6=97=B6=E5=99=A8?= =?utf8?q?=E5=9B=A032=20=E4=BD=8D=E6=97=A0=E7=AC=A6=E5=8F=B7=E6=95=B4?= =?utf8?q?=E6=95=B0=E6=BA=A2=E5=87=BA=E5=AF=BC=E8=87=B4=E6=8F=90=E5=89=8D?= =?utf8?q?=E5=93=8D=E9=93=83bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../countdown/include/CountDownModel.h | 8 ++-- .../nativeui/countdown/src/CountDownModel.cpp | 37 +++++++++++-------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/include/CountDownModel.h b/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/include/CountDownModel.h index 41810b9da..4cdf7950f 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/include/CountDownModel.h +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/include/CountDownModel.h @@ -120,13 +120,13 @@ namespace OHOS bool GetisPaused(void) const { return isPaused; } - uint32_t get_current_time(); // 获取当前系统时间戳(ms) + uint64_t get_current_time(); // 获取当前系统时间戳(ms) public: static int g_CountDownTimes; static int totalSeconds; //要到计时总秒数 - static uint32_t startTime; // 开始时间戳(ms) - static uint32_t pauseTime; // 暂停时间戳(ms) - static uint32_t endTime; // 结束时间戳(ms) + static uint64_t startTime; // 开始时间戳(ms) + static uint64_t pauseTime; // 暂停时间戳(ms) + static uint64_t endTime; // 结束时间戳(ms) private: CountDownModel() {} diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/src/CountDownModel.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/src/CountDownModel.cpp index 97e00cf58..8e944f4f8 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/src/CountDownModel.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/countdown/src/CountDownModel.cpp @@ -29,9 +29,9 @@ namespace OHOS static osTimerId_t g_timer = nullptr; int CountDownModel::g_CountDownTimes = {0}; int CountDownModel::totalSeconds = 0; //总的倒计时时间 - uint32_t CountDownModel::startTime = 0; - uint32_t CountDownModel::pauseTime = 0; - uint32_t CountDownModel::endTime = 0; + uint64_t CountDownModel::startTime = 0; + uint64_t CountDownModel::pauseTime = 0; + uint64_t CountDownModel::endTime = 0; static constexpr int32 NUM_TEN = 10; // 主要用于格式化输出,当小时、分钟或秒小于10时,在其前面添加一个’0’以保持常规时间格式,例如“09:05:03”。 static constexpr int16 NUM_TIME_MIN = 60; static constexpr int16 NUM_TIME_HOUR = 3600; @@ -463,27 +463,31 @@ namespace OHOS if (isRunning && !isPaused) { - uint32_t currentTime = CountDownModel::GetInstance()->get_current_time(); + uint64_t currentTime = CountDownModel::GetInstance()->get_current_time(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "currentTime(ms):%llu,endTime(ms):%llu",currentTime,CountDownModel::endTime); if (currentTime >= CountDownModel::endTime) { CountDownModel::g_CountDownTimes = 0; // 这里可以添加倒计时结束后的操作,比如发出提示音等 GraphicService::GetInstance()->PostGraphicEvent(std::bind(CountDown_TimerCallbackProc, data)); return; } - uint32_t remainingMs = CountDownModel::endTime - currentTime; + uint64_t remainingMs = CountDownModel::endTime - currentTime; CountDownModel::g_CountDownTimes = static_cast((remainingMs + 999) / 1000); // ceil to seconds WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间戳(ms):%u,倒计时剩余时间(s):%d", currentTime, CountDownModel::g_CountDownTimes); } } - uint32_t CountDownModel::get_current_time() + uint64_t CountDownModel::get_current_time() { - uint32_t time; - if (uapi_get_timestampe_ms(&time) != ERRCODE_SUCC) { + uint32_t time = 0; + if (uapi_get_timestampe_ss(&time) != ERRCODE_SUCC) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp"); return 0; - } - return time; + } // 秒级时间戳转换成毫秒级时间戳 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "currentTime(ms)转换前:%u",time); + uint64_t timeMs = static_cast(time) * 1000; // 秒级时间戳转换成毫秒级时间戳 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "currentTime(ms)转换后:%llu",timeMs); + return timeMs; } void CountDownModel::countdownstart() @@ -491,9 +495,10 @@ namespace OHOS isRunning = true; isPaused = false; CountDownModel::totalSeconds = CountDownModel::g_CountDownTimes; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "totalSeconds:%u",CountDownModel::get_current_time()); CountDownModel::startTime = get_current_time(); //获取开始时间戳 - CountDownModel::endTime = CountDownModel::startTime + static_cast(g_CountDownTimes) * 1000; //获取结束时间戳(ms) - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%u,endTime(ms):%u",CountDownModel::startTime,CountDownModel::endTime); + CountDownModel::endTime = CountDownModel::startTime + static_cast(g_CountDownTimes) * 1000; //获取结束时间戳(ms) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%llu,endTime(ms):%llu,totalSeconds:%d",CountDownModel::startTime,CountDownModel::endTime,CountDownModel::totalSeconds); } @@ -508,16 +513,16 @@ namespace OHOS { if (isRunning && isPaused) { isPaused = false; - uint32_t currentTime = get_current_time(); - uint32_t pauseDuration = currentTime - CountDownModel::pauseTime; + uint64_t currentTime = get_current_time(); + uint64_t pauseDuration = currentTime - CountDownModel::pauseTime; CountDownModel::endTime = CountDownModel::endTime + pauseDuration; if (currentTime >= CountDownModel::endTime) { CountDownModel::g_CountDownTimes = 0; } else { - uint32_t remainingMs = CountDownModel::endTime - currentTime; + uint64_t remainingMs = CountDownModel::endTime - currentTime; CountDownModel::g_CountDownTimes = static_cast((remainingMs + 999) / 1000); // ceil to seconds } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%u,pauseDuration(ms):%u,endTime(ms):%u", + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%llu,pauseDuration(ms):%llu,endTime(ms):%llu", CountDownModel::startTime, pauseDuration, CountDownModel::endTime); } } -- 2.17.1