我从来没有真正做过太多的C,并且对于从Android应用程序向Pebble Watch发送布尔值的最佳方式感到有点难过。
我的字符串工作正常,但PebbleDictionary上似乎没有addBoolean方法。作为一种解决方法,我试图使用addUint8发送1或0,但是在Pebble上处理消息时遇到了麻烦。
这是我的Android代码:
PebbleDictionary data = new PebbleDictionary();
if (isGPSFix()){
data.addUint8(GPS_HAS_FIX_KEY, Byte.valueOf("1"));
} else {
data.addUint8(GPS_HAS_FIX_KEY, Byte.valueOf("0"));
}
PebbleKit.sendDataToPebble(app.getContext(), UUID, data);
在我的Pebble中,我有一个数据结构:
static struct MyData {
uint8_t haveGPS[1];
.... // other stuff ommitted
AppSync sync;
uint8_t sync_buffer[256];
} s_data;
然后我在sync_tuple_changed回调中尝试比较它。
static void sync_tuple_changed_callback(const uint32_t key, const Tuple* new_tuple, const Tuple* old_tuple, void* context) {
(void) old_tuple;
switch (key) {
case GPS_HAS_FIX_KEY:
if (memcmp(s_data.haveGPS, new_tuple->value->data, 8) == 0){
memcpy(s_data.haveGPS,new_tuple->value->data, new_tuple->length);
vibes_short_pulse();
}
break;
default:
return;
}
}
手表不会崩溃,当手机掉落或获取GPS时,它永远不会振动。
答案 0 :(得分:0)
据我了解,您必须向手表发送键和对象词典。在Objective C中它看起来像这样:
NSDictionary *update = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
键都是整数和我认为可以是布尔值的对象。在我的情况下,只有String运作良好。
在循环中,我在手表上执行类似的操作:
t=dict_find(received,count);
strcpy(strs[count], dict_find(received,count)->value->cstring);
但我必须告诉你,我还是一名新秀。
答案 1 :(得分:0)
在Android方面看起来不错。我认为这更像是一个AppSync问题。
以下是手表应用程序中要检查的一些内容:
GPS_HAS_FIX_KEY
; Tuplet initial_values[] = {
TupletInteger(GPS_HAS_FIX_KEY, (uint8_t) 0),
/* Other tuplets that you will synchronize */
};
app_sync_init()
函数:app_sync_init(&sync, sync_buffer, sizeof(sync_buffer),
initial_values, ARRAY_LENGTH(initial_values),
sync_tuple_changed_callback, sync_error_callback, NULL);
这两个步骤是app_sync工作所必需的(cf AppSync reference documentation)。
答案 2 :(得分:0)
感谢sarfata上面接受的答案,我发现我没有将这个新项目添加到Pebble所期待的元组中。
一旦我添加了,我的switch语句开始工作,我只需要让内存比较工作。这是我的记忆比较的工作代码,以防它帮助任何人。
case GPS_HAS_FIX_KEY:
if (memcmp(s_data.haveGPS, new_tuple->value->data, 1) != 0){
memcpy(s_data.haveGPS,new_tuple->value->data, 1);
vibes_short_pulse();
}
break;
这真的很简单,因为期望一个字节(不是8个字节 - 我认为它做了一点比较)并且否定了新值与旧值不同的逻辑。