【发布时间】:2013-06-20 11:56:43
【问题描述】:
我从来没有真正做过太多的 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 时不会振动。
【问题讨论】:
标签: android c pebble-watch pebble-sdk