Pebble TimeのWatchfaceにバッテリー残量を追加してみた

前回に引き続きPebbleです

前回Watchfaceを作ってみましたが、バッテリー残量が無かったのがちょっと不便でしたね。
そんな訳で今回はバッテリー残量を追加してみました。

バッテリー残量をWatchfaceに追加してみる

初期状態で表示するようにします

まずはグローバル変数に今回追加した部分で必要なのを追加。

// まずTextLayer準備
static TextLayer *battery_layer;
// 表示テキスト用のバッファ用意
static char s_battery_buffer[16];

その後、window_load関数に初期表示を実装します。

  battery_layer = text_layer_create(PBL_IF_ROUND_ELSE(
    GRect(75, 158, 40, 20),
    GRect(62, 148, 40, 20)));
  // バッテリーの状態を取得
  // 他にも充電中かとかの情報もとれる
  BatteryChargeState charge_state = battery_state_service_peek();
  snprintf(s_battery_buffer, sizeof(s_battery_buffer), "%d%%", charge_state.charge_percent);
  text_layer_set_text(battery_layer, s_battery_buffer);
  text_layer_set_background_color(battery_layer, GColorClear);
  text_layer_set_text_color(battery_layer, GColorDarkCandyAppleRed);
  text_layer_set_font(battery_layer, fonts_get_system_font(FONT_KEY_GOTHIC_18_BOLD));

こんな感じですね。
PBL_IF_ROUND_ELSEマクロでPebble Time Roundと両対応に出来るみたいですね。

バッテリ状態に変更があったら、テキスト再描画する

今までだと初期表示しか対応していないので、状態が変わったら再描画して欲しいのです。
なので関数を追加します。

static void battery_handler(BatteryChargeState charge_state) {

  snprintf(s_battery_buffer, sizeof(s_battery_buffer), "%d%%", charge_state.charge_percent);
  text_layer_set_text(battery_layer, s_battery_buffer);
}

そしてwindow_load関数の中でこれを登録

  battery_state_service_subscribe(battery_handler);

unload時には破棄する

どこまで影響あるか分かりませんが、出来るだけお行儀よくunload時はそれぞれ破棄してからにします。

  text_layer_destroy(battery_layer);
  battery_state_service_unsubscribe();

こんなところですかね。
無事にインストール出来ました。

Pebble開発のドキュメント

https://developer.getpebble.com/
ここで公式のドキュメントがありますが、充実していますね。
検索も欲しいの簡単に見つけられたので、あまりない日本語の情報を探すより公式ドキュメントの方がよさそうです。

GitHub

コード全体はこちらで公開しています。
https://github.com/shizukukun/aldevetzwatch

About the author

Ryu Seino
Ryu Seino

2015年入社。
コンシューマー向けWebサービス、商社の基幹システムなどを担当した後、2016年の途中から管理部システム課に所属となる(ちなみに一人しかいない)。
好きな動物はペンギン🐧
都内にて一人飲酒業務に精を出していたが、諸事情により活動休止。
最近の趣味としては銭湯(含スーパー銭湯)に行く事と水族館に行く事。

Add Comment

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Ryu Seino By Ryu Seino

最近の投稿

アーカイブ

カテゴリー

タグクラウド

コーポレートサイト