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:
また、こちらのスクリプトも追加する。
関連記事
-
-
スマートフォン手袋を買ってみた 2011
去年買ったスマートフォン用手袋は石油くさくてかなりつらい思いをしながら使ってましたが、今年もこりず
-
-
Nintendo 3DS 開梱。ウィニングイレブン 3Dの感想
たまたまAmazonで予約できた3DSは、3/6以降の発送になっていたが、実際には3/4に届いた
-
-
iPad スタンド SANWA SUPPLY MR-IPADST1 感想
以前書いた、iPad スタンド SANWA SUPPLY MR-IPADST1 が届いて、しばらく使
-
-
デザインの良いデスクライト LEDIC EXARM mono
早朝にプログラムを書いているが、手元が暗くて目が悪くなりそうなので、 なるべく省スペース
-
-
MacJournalからのテスト投稿
今日MacPeopleで知ったMacJournalからのWordPressへの書き込みテスト。 うま
-
-
アップルiPodイベント 2009.9.9
9月9日のアップルのiPodイベント rock and roll が迫ってきた。 しばらく前から楽し
-
-
[iPhone6 Plus] はじめて保護ガラスを貼ってみた JTT Online Glass Protector
会社の知り合いが色をまちがって購入したということで、iPhone6 Plus 用保護ガラスを
-
-
Miselu C.24 日本でも12/16からSoftbankで発売開始
KickstarterでMiselu の iPad用キーボード C.24 に出資してみた |
-
-
[買ってみた] ポーレックスセラミックコーヒーミル
ポーレックス コーヒーミル セラミック ミニposted with amazlet at
-
-
2014年はテニスセンサーの年
10年ほど、週に1回テニススクールに通っている。 レッスン後に練習を振り返るために、で