我开发了一个带Pebble.js
的Watchapp,它获取一个包含整数的远程文件,并发出许多“短”Vibe事件。
问题是:如果当前正在进行Vibe事件,则不会发生。我已经使用这样的东西试图将它们展开(BUMP_COUNT_INT ==要发出的Vibes数量):
for (var i = 0; i < BUMP_COUNT_INT; i++) {
setTimeout(function(){
Vibe.vibrate('short');
}, 900*i);
然而,即使900毫秒(* Vibes)也不一致。它们之间有时或多或少有空间,它们有时合并(导致的振动少于预期)。
看起来C SDK能够自定义序列。
我希望有人遇到过更清洁的解决方法,或者更稳定的方式来使用Pebble.js来解决这个问题......?
如果我想继续使用Pebble.js,我是否应该接受我必须进一步传播Vibes?
你会做什么?答案 0 :(得分:3)
Pebble.js中没有自定义模式,但您可以轻松添加新的&#39;类型&#39; Pebble.js中的vibe,并将其作为Pebble.js的C端的自定义模式实现。
步骤如下:
在GitHub上克隆Pebble.js项目并获取本地副本。您需要download and install the Pebble SDK在您的计算机上本地编译它(这不适用于CloudPebble)。
声明一种新类型的vibe命令in src/js/ui/simply-pebble.js
(Pebble.js JavaScript库):
var vibeTypes = [
'short',
'long',
'double',
'custom'
];
var VibeType = makeArrayType(vibeTypes);
enum VibeType {
VibeShort = 0,
VibeLong = 1,
VibeDouble = 2,
VibeCustom = 3,
};
然后扩展Vibe命令处理程序以支持src/simply/simply_msg.c
static void handle_vibe_packet(Simply *simply, Packet *data) {
VibePacket *packet = (VibePacket*) data;
switch (packet->type) {
case VibeShort: vibes_short_pulse(); break;
case VibeLong: vibes_break_pulse(); break;
case VibeDouble: vibes_double_pulse(); break;
case VibeCustom:
static const uint32_t const segments[] = { 200, 100, 400 };
VibePattern pat = {
.durations = segments,
.num_segments = ARRAY_LENGTH(segments),
};
vibes_enqueue_custom_pattern(pat);
break;
}
}
更好的解决方案是建议一个补丁,以便可以在JavaScript端设计任何自定义模式并发送到手表。