gpt4 book ai didi

c - 为什么我的 Pebble 表盘不是每分钟更新一次时间?

转载 作者:太空狗 更新时间:2023-10-29 15:19:34 25 4
gpt4 key购买 nike

我正在学习表盘开发。我一直在密切关注 Pebble 指南,所以我 80% 的代码与他们的示例代码相同。我可能遗漏了一些非常小的东西,但我的脸似乎没有正确订阅时间服务。

我做错了什么?

init() 中,我有:

tick_timer_service_subscribe(MINUTE_UNIT, tick_handler);
tick_timer_service_subscribe(DAY_UNIT, tick_handler);

这是tick_handler:

static void tick_handler(struct tm *tick_time, TimeUnits units_changed) {
update_time();
}

这是更新时间:

static void update_time() {
time_t temp = time(NULL);
struct tm *tick_time = localtime(&temp);

static char time_buffer[] = "00:00";
static char date_buffer[] = "00/00/00";

if (clock_is_24h_style() == true) {
strftime(time_buffer, sizeof(time_buffer), "%H:%M", tick_time);
} else {
strftime(time_buffer, sizeof(time_buffer), "%I:%M", tick_time);
}
text_layer_set_text(s_time_layer, time_buffer);

strftime(date_buffer, sizeof(date_buffer), "%D", tick_time);
text_layer_set_text(s_date_layer, date_buffer);
}

人脸仅在首次加载时更新时间(通过调用 update_time)。

最佳答案

TimeUnits 是位掩码。您设置一个掩码,然后调用一次 tick_timer_service_subscribe。您使用 DAY_UNITS 进行的第二次通话正在更改您的订阅。要订阅这两个单元,您按位或掩码位:

tick_timer_service_subscribe(MINUTE_UNIT | DAY_UNIT, tick_handler);

请注意您的报价处理程序如何具有 TimeUnits 参数。该参数告诉您哪个单元触发了处理程序。在您的情况下,您总是想更新时间,而 DAY_UNIT 似乎是多余的。但你可以这样做:

static void tick_handler(struct tm *tick_time, TimeUnits units_changed) {
if( (units_changed & MINUTE_UNIT) != 0 ) {
/* Minutes changed */
}

if( (units_changed & DAY_UNIT) != 0 ) {
/* Days changed */
}
}

关于c - 为什么我的 Pebble 表盘不是每分钟更新一次时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com