非常基本的问题,我一直试图弄清楚几个小时,但无法解决。
所以我正在为Pebble创建我的第一个表盘,我希望手表每小时都能发出嗡嗡声(振动)。你还记得有些数字手表在时刻发出“嘟嘟”声吗?那样的东西。
我认为最简单的方法是:
if (tick_time->tm_min == 0) {
vibes_short_pulse();
}
效果很好。现在我有一个小虫子。在那一分钟内,如果重新创建窗口(例如,如果您转到时间轴或打开watchapp并快速返回到我的表盘),则会再次调用update_time(),以便再次发出嗡嗡声。不是一个巨大的错误,但有点烦人。
我尝试使用布尔标志进行解决。
static bool vibed = false;
然后,
if (tick_time->tm_min != 0) {
vibed = false;
}
if (tick_time->tm_min == 0 && vibed == false) {
vibes_short_pulse();
vibed = true;
}
但显然,每次重新创建窗口时,无论如何,标志都会返回“假”。
我不知道如何解决它。如果你有一个暗示我,将不胜感激。谢谢!
答案 0 :(得分:2)
不要将分钟检查为零,而是检查小时更改事件,例如:
void tick_handler(struct tm *tick_time, TimeUnits units_changed)
{
// Some other code that display/process time
// on hour change do a short buzz
if (units_changed & HOUR_UNIT) {
vibes_short_pulse();
}
}
答案 1 :(得分:0)
我会记得你最后一次嗡嗡声的时刻。只有嗡嗡声才会有所不同。所以:
//initialize to impossible hour so it works the first time
static int lastBuzzHour=-1;
if (tick_time->tm_hour !=lastBuzzHour) {
vibes_short_pulse();
// now that you've buzzed, remember it so you don't retrigger
lastBuzzHour=tick_time->tm_hour;
}