ConnectIQ

Garmin Connect IQでウォッチフェイスをつくってみた

投稿日:2018年5月5日 更新日:

Garmin Connect IQとは

ConnectIQは、Garmin製のスマートウォッチやサイコン上で利用できるオープンプラットフォーム.
言語はMonkey Cという言語.

環境を整える

macOS High Siera

  1. JDK java –version 10.0.1
  2. Eclipse Version: Oxygen.3a Release (4.7.3a)
  3. プラグインインストール
  4. connect IQ SDK 2.4.5
  5. デベロッパーキーの登録

環境構築はこちらを参考に.
Eclipseでやる場合はあとからSDKをインストールするので、「The Eclipse Plug-in」から始めればOK.
XMLエディターは最初からはいっていたので、ConnectIQのプラグインのインストールから始めた.
デベロッパーキーも、Eclipseから作成できるので、「Generating a Key Using the Eclipse Plug-in」の方を使えばかんたん.

Hello World

ここの「Creating Your First Project」から

プロジェクトを作成して、シミュレーターでこんな画面が出ればOK.

Connect IQではMonkey Cという言語をつかう.
Androidアプリを作ったことがあれば、ディレクトリ構造が似てるのでだいたいわかる.

サンプルアプリのコードを読む

メインのAppから、Viewを呼び出して

Viewの方で、Layoutを呼び出して

layout.xml

onUpdateは、 low power modeでは1分に1回、high power modeでは1秒に1回、呼び出される.

デバッグログ

コンソールに情報を表示させる.
ここでのSysは、Toybox.System.

年月日も表示してみる

layout.xml

まず、適当にlayout.xmlに描画場所をつくる.

View.mc onUpload()

サンプルのgetClockTimeは、簡易なフォーマットで時間を取得できるClockTimeを返す.
なので、年月日は取得できない.
年月日まで取得するには、一般的なTimeをつかう.
また、フォーマットの指定では、グレゴリオ暦をつかうGregorianをつかう.

リンク先のサンプルはこう.

そこで、こんな感じで
usingをつかって、ライブラリを読み込んでおく必要がある.

完成図

年月日も表示できた!
シミュレーターのセッティングから言語を日本語にしないと文字化けする.

秒も表示されてるけど、セッティングからlowパワーモードのチェックをはずすと毎秒描画されるようになる.

バッテリーの状態を表示する

layout.xml

バッテリーの表示場所を用意する

View.mc onUpdate()

バッテリの状態は、Statsから取得できる.

今度は、バッテリの残量に応じて色分けしてみた.

完成図

バッテリーの残量に応じて色が変わるようになった.
シミュレーターのバッテリ残量はセッティングから変更できる.

直接描画

layout.xmlを使わずに、直接描画

準備

onLayoutでlayout.xmlを読み込まない

onUpdateでスーパーしない

いろいろ描画してみる

こんな感じに

アナログ時計

サンプルのアナログ時計から

fillPolygon

fillPolygonで時計の針を描画する.
fillPolygonは座標をArrayで渡すと、その座標の中をforegroundColorで塗りつぶす.

generateHandCoordinates

ポリゴン用に4つの座標を計算する関数を作る.
引数は、中心の座標、角度、長さ、逆に飛び出る長さ、幅.

onUpdate 短針

時計の短針は、単純に時間だけじゃなくて、分でも少しずつ角度が変わる.
そこで、12時間*60分のうち、何分という割合を出して、2πをかけて角度を出す(ラジアン).

onUpdate 長針

長針は、60分に対する分の割合を出して、2πをかける.

背景

drawArcは、指定した角度円弧を描く.
12方向に3度ずつ円弧を描けば、アナログ時計の背景が描ける.

完成図

歩数や階段の登り降り

toybox.ActivityMonitor.getInfo()で取得できる.

情報

情報はあまりないので、APIから調べるしかない.

日本語

また、SDKにはサンプルがついているので、サンプルをインポートして参考にできる.

-ConnectIQ
-, ,

執筆者:

関連記事

関連記事はありませんでした