私は実際にはあまり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);
そして、私のペブルにはデータ構造があります:
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 を取得したりしたときに振動することはありません。