Pebble WatchApp の設定をスマホから変更可能にする
このページは Pebble SDK 2.0 Tutorial #9: App Configuration | try { work(); } finally { code(); } の記事をおおまかに翻訳したものである。(Chris氏から許可いただきました)
Pebble アプリにはWatchface と WatchAppの2種類があり、WatchfaceはPebbleのハードウェアボタンを使用することができないのでPebble上で設定を変更することができない。
このため、Android/iOS 側で設定ページを用意する必要がある。
ここでは例として、Watchface や WatchApp の背景色をPebbleKit JSを使ってスマホ側で変更できるようにしてみる。
参考ページ Developer Guides // Pebble Developers
作業の流れ
- PebbleKit JS からデータを送れるように WatchAppでAppMessageを使えるようにする
- appinfo.json か、CloudPebble の設定ページで、AppMessageで使うKeyを設定する
- PebbleKit JS のコードを変更して設定ページをロードして watchappに送るようにする
- HTMLページを用意してユーザが設定を変更できるようにする
PebbleKit JS からデータを送るために WatchAppにAppMessage用コードを追加する
AppMessageInboxReceived ハンドラを用意し、メッセージを受けられるようにする。
ハンドラ中で persist date に値を書き込む。
static void in_recv_handler(DictionaryIterator *iterator, void *context)
{
//Get Tuple
Tuple *t = dict_read_first(iterator);
if(t)
{
switch(t->key)
{
case KEY_INVERT:
//It's the KEY_INVERT key
if(strcmp(t->value->cstring, "on") == 0)
{
//Set and save as inverted
text_layer_set_text_color(text_layer, GColorWhite);
text_layer_set_background_color(text_layer, GColorBlack);
text_layer_set_text(text_layer, "Inverted!");
persist_write_bool(KEY_INVERT, true);
}
else if(strcmp(t->value->cstring, "off") == 0)
{
//Set and save as not inverted
text_layer_set_text_color(text_layer, GColorBlack);
text_layer_set_background_color(text_layer, GColorWhite);
text_layer_set_text(text_layer, "Not inverted!");
persist_write_bool(KEY_INVERT, false);
}
break;
}
}
}
下記を init などで実行する。
- app_message_register_inbox_received((AppMessageInboxReceived) in_recv_handler);
- app_message_open(app_message_inbox_size_maximum(), app_message_outbox_size_maximum());
書き込んだ persist data はwindow_load などで読み込む
appinfo.json に appkeys を追加する
App Metadata (SDK only) // Pebble Developers を参考に appinfo.json に appKeys を追加する。
今回の場合は KEY_INVERT を追加する。
{
"uuid": "153ff30e-0288-4411-871c-fce3dcc99e5f",
"shortName": "sdktut9",
"longName": "sdktut9",
"capabilities": [ "configurable" ],
"companyName": "Chris Lewis",
"versionCode": 1,
"versionLabel": "1.0.0",
"watchapp": {
"watchface": false
},
"appKeys": {
"KEY_INVERT": 0
},
"resources": {
"media": []
}
}
PebbleKit JS から設定ページをロードして watchappに送る
PebbleKit JS は、スマートフォンから configuration page を読み込んでwatchappに結果を送るためのもので、src/js/pebble-js-app.js にある。 “showConfiguration” と “webviewclosed” のイベントで設定を行う。 デフォルトの状態
Pebble.addEventListener("ready",
function(e) {
console.log("PebbleKit JS ready!");
}
);
showConfiguration イベントでは、ページを開く
Pebble.addEventListener("showConfiguration",
function(e) {
//Load the remote config page
Pebble.openURL("https://dl.dropboxusercontent.com/u/10824180/pebble%20config%20pages/sdktut9-config.html");
}
);
webviewclosed では、設定を読み込む
Pebble.addEventListener("webviewclosed",
function(e) {
//Get JSON dictionary
var configuration = JSON.parse(decodeURIComponent(e.response));
console.log("Configuration window returned: " + JSON.stringify(configuration));
//Send to Pebble, persist there
Pebble.sendAppMessage(
{"KEY_INVERT": configuration.invert},
function(e) {
console.log("Sending settings data...");
},
function(e) {
console.log("Settings feedback failed!");
}
);
}
);
SDKTut9 Configuration
Pebble Config Tutorial
Choose watchapp settings
Invert watchapp:
また、こちらのスクリプトも追加する。
関連記事
-
-
Kindle 3 で Appleの開発者向けドキュメントを読めるか
Kindle3 3G+Wi-Fi 6インチディスプレイを買ったので、いろいろ試している。 そもそもK
-
-
[Gadget] Kickstarter で Moff に出資してみた
Moff は面白そうだし、iOSのSDKが出るらしいし、安いし、ということで記事を見てから10
-
-
奥さん用の3人乗り電動自転車を検討する → ギュットミニを買いました
今使っているNationalの電動自転車がそろそろ限界に近づいているので、買い換えを検討中。 うち
-
-
ダイソンの強力ハンディクリーナー Dyson DC31 Motorhead 感想
2010年9月14日簡単に感想を。音は結構大きい。電動ドライバー系の高周波の音がする。掃除機の音とは
-
-
Sennheiser のネックストラップヘッドフォン CXL400 を買ってみた
ネックストラップヘッドフォンが好きで、最初にソニーが発売した時には発売日を待ち望んで買ったのだ
-
-
PDFファイルをKindle3で快適に読みたい
PDFファイルをKindle3で快適に読みたい。 PDFファイルはそのままKindle3で読むことが
-
-
エルゴノミクスマウス WOWPEN JOY 400-MA011 使用レポート1日目
腱鞘炎になったのでマウスをこれに替えた人が会社にいたので、数日悩んだ末注文。3480円
-
-
新型 Kindle 3G+Wi-Fi Graphite 到着
昨日Amazonから発送した旨のメールが届いて、Ontario CAにあると思っていたら、翌日
-
-
東プレ Realforce 専用交換キーキャップ 2011/05/17
等荷重のRealforceを探すために時々検索をしているが、この前たまたま発見して注文したもの。 あ
-
-
薄い iPad2用ケース eggshell for iPad2 TUN-PD-000079 購入 2011/06/27
不具合報告があったので、当初予定がなかったiPad2を購入。 それはまた別に書くとして、まずは一緒に
