Pebble WatchApp の設定をスマホから変更可能にする

公開日: : 最終更新日:2015/08/22 gadget, Pebble

invert-notinvert

このページは 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

作業の流れ

  1. PebbleKit JS からデータを送れるように WatchAppでAppMessageを使えるようにする
  2. appinfo.json か、CloudPebble の設定ページで、AppMessageで使うKeyを設定する
  3. PebbleKit JS のコードを変更して設定ページをロードして watchappに送るようにする
  4. 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!");
      }
    );
  }
);



上記の URLにHTMLを用意して、ユーザが設定を変更できるようにする。


  
    SDKTut9 Configuration
  
  
    

Pebble Config Tutorial

Choose watchapp settings

Invert watchapp:

また、こちらのスクリプトも追加する。

HTML置き場として上記参考ページでは Dropbox の Public folder がおすすめされている。こちらを使うと自前でWebサーバを用意しなくてもすむ。

関連記事

MacOS Yosemite に Pebble SDK 3.0 をインストールする

Pebble Timeが届いたので、早速 Pebble SDK 3.0 をMacBook P

記事を読む

[買ってみた] iPhone11 Pro Max用にTOPEAK ドライバッグ

記事を読む

no image

MacBookにHDD増設 OptiBay Hard DriveKit for MacBook Pro 15/17 Unibody and MacBook Unibody スリムドライブ付き

MacPeople 2010年5月号で知った商品。 なんと、自分のMacBook Late2008の

記事を読む

no image

iPad/iPad2 収納ケース Built Neoplene Envelope

iPad を買って以来使い続けているBuiltのケースです。 Netbook Envelope とい

記事を読む

ソニーWF-1000XM4を買ってみた

2019年に ソニーのノイキャンヘッドセットWF-1000XM3購入 してすぐ紛失してしまい、シ

記事を読む

[iOS SDK] Olympus Camera Kit で Pebble連携アプリを作ってみた

3月25日にOLYMPUS AIR A01が発売されたが、このカメラはOPC(Open Pl

記事を読む

おんぷちゃん 1.9.0 MIDI対応

おんぷちゃん 1.9.0 で MIDI キーボードに対応しました。(まだ App Store にてレ

記事を読む

2015年に買ったりもらったりリリースしたりしたもの振り返り

年末なので2015年を振り返ってみよう企画。前半は仕事で死んでいたが、思ったよりもいろいろ活動してい

記事を読む

no image

Xperia ハードコーティングシェルジャケット クリア

iPod touchは大事に使っていたがすぐに擦り傷だらけになったので、Xperiaは最初から保護し

記事を読む

EverLearn Ver.1.6 を公開しました。今回はiPhone6 Plus 対応+英英辞書追加

残念ながらあまり売れていないiPhoneアプリ EverLearn ですが、自分的には毎日使っている

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Ember Mug 2のACアダプタをUSB Type-Cに変えてみた

冬になると活躍する Ember Mug 2 の充電器は付属のACアダ

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

→もっと見る

  • 2015年8月
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
PAGE TOP ↑