bool isRunning = CountDownModel::GetInstance()->GetisRunning();\r
bool isPaused = CountDownModel::GetInstance()->GetisPaused();\r
\r
- if (isRunning &&!isPaused) \r
+ if (isRunning && !isPaused) \r
{\r
- uint32_t currentTime = CountDownModel::GetInstance()->get_current_time();\r
- CountDownModel::g_CountDownTimes = CountDownModel::totalSeconds - (currentTime - CountDownModel::startTime);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间戳:%u,倒计时剩余时间:%d", currentTime ,CountDownModel::g_CountDownTimes);\r
- if (CountDownModel::g_CountDownTimes <= 0 && currentTime == CountDownModel::endTime) {\r
+ uint32_t currentTime = CountDownModel::GetInstance()->get_current_time();\r
+ if (currentTime >= CountDownModel::endTime) {\r
+ CountDownModel::g_CountDownTimes = 0;\r
// 这里可以添加倒计时结束后的操作,比如发出提示音等\r
GraphicService::GetInstance()->PostGraphicEvent(std::bind(CountDown_TimerCallbackProc, data));\r
+ return;\r
}\r
+ uint32_t remainingMs = CountDownModel::endTime - currentTime;\r
+ CountDownModel::g_CountDownTimes = static_cast<int32_t>((remainingMs + 999) / 1000); // ceil to seconds\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间戳(ms):%u,倒计时剩余时间(s):%d", currentTime, CountDownModel::g_CountDownTimes);\r
}\r
}\r
\r
uint32_t CountDownModel::get_current_time()\r
{\r
uint32_t time;\r
- if (uapi_get_timestampe_ss(&time) != ERRCODE_SUCC) {\r
+ if (uapi_get_timestampe_ms(&time) != ERRCODE_SUCC) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");\r
return 0;\r
}\r
isPaused = false;\r
CountDownModel::totalSeconds = CountDownModel::g_CountDownTimes;\r
CountDownModel::startTime = get_current_time(); //获取开始时间戳\r
- CountDownModel::endTime = CountDownModel::startTime + g_CountDownTimes; //获取结束时间戳\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime:%u,endTime:%u",CountDownModel::startTime,CountDownModel::endTime);\r
+ CountDownModel::endTime = CountDownModel::startTime + static_cast<uint32_t>(g_CountDownTimes) * 1000; //获取结束时间戳(ms)\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%u,endTime(ms):%u",CountDownModel::startTime,CountDownModel::endTime);\r
\r
}\r
\r
uint32_t currentTime = get_current_time();\r
uint32_t pauseDuration = currentTime - CountDownModel::pauseTime;\r
CountDownModel::endTime = CountDownModel::endTime + pauseDuration;\r
- CountDownModel::totalSeconds = CountDownModel::totalSeconds + pauseDuration + 1;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime:%u,pauseDuration:%u,endTime:%u",CountDownModel::startTime,pauseDuration,CountDownModel::endTime);\r
+ if (currentTime >= CountDownModel::endTime) {\r
+ CountDownModel::g_CountDownTimes = 0;\r
+ } else {\r
+ uint32_t remainingMs = CountDownModel::endTime - currentTime;\r
+ CountDownModel::g_CountDownTimes = static_cast<int32_t>((remainingMs + 999) / 1000); // ceil to seconds\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime(ms):%u,pauseDuration(ms):%u,endTime(ms):%u",\r
+ CountDownModel::startTime, pauseDuration, CountDownModel::endTime);\r
}\r
}\r
\r