嗡嗡声(振动)在几点钟?

时间:2015-10-10 23:40:04

标签: c pebble-watch pebble-sdk

非常基本的问题,我一直试图弄清楚几个小时,但无法解决。

所以我正在为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;
}

但显然,每次重新创建窗口时,无论如何,标志都会返回“假”。

我不知道如何解决它。如果你有一个暗示我,将不胜感激。谢谢!

2 个答案:

答案 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;
    }