Пользовательская последовательность Vibe в Pebble.js?
Я разработал Watchapp с Pebble.js
который выбирает удаленный файл, содержащий целое число, и испускает столько "коротких" событий Vibe.
Проблема в том, что события Vibe не происходят, если они находятся в процессе. Я прибегнул к чему-то вроде этого, чтобы попытаться распространить их (где BUMP_COUNT_INT == количество испускаемых флюидов):
for (var i = 0; i < BUMP_COUNT_INT; i++) {
setTimeout(function(){
Vibe.vibrate('short');
}, 900*i);
Однако даже 900 мс ( * Vibes) не соответствуют. Иногда между ними больше или меньше места, и они иногда сливаются (вызывая меньше вибраций, чем ожидалось).
Похоже, что C SDK способен создавать пользовательские последовательности.
Я надеялся, что кто-то наткнулся на более чистый обходной путь или более стабильный способ сделать это с помощью Pebble.js ...?
Должен ли я просто признать, что мне придется распространять Vibes еще дальше, если я захочу продолжить с Pebble.js?
Чтобы ты делал?
1 ответ
Пользовательские шаблоны не доступны в Pebble.js, но вы можете легко добавить новый тип вибрации в Pebble.js и реализовать его как пользовательский шаблон на стороне C в Pebble.js.
Шаги будут:
Клонируйте проект Pebble.js на GitHub и получите локальную копию. Вам нужно будет скачать и установить Pebble SDK, чтобы скомпилировать его локально на вашем компьютере (это не будет работать в CloudPebble).
Объявите новый тип команды VIBE в
src/js/ui/simply-pebble.js
(библиотека JavaScript Pebble.js):var vibeTypes = [ 'short', 'long', 'double', 'custom' ]; var VibeType = makeArrayType(vibeTypes);
Создать новый тип Vibe в
src/simply/simply_msg.c
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 и отправлен на часы.