Tip:
Highlight text to annotate it
X
ユーザーカスタム ウォッチフェイスは
アンドロイドウェアで 最も期待される機能の一つです
最新のリリースからは ウォッチフェイスの開発を
公式的にサポートすることが 発表されました
こんにちは Google のホイ・ラムです
ウォッチフェイス開発について 紹介いたします
ウォッチフェイスは バックグラウンドで動くサービスです
これから3つの簡単ステップで ユーザーカスタムを
説明していきます
まず ウォッチフェイス プロジェクトの制作を検討し
その次に インタラクティブモードや 常に画面表示モード用のカスタマイズを
最後も重要ですが
条件に関係なく表示できる ウォッチフェイスを作成するのに役立つ
追加 API を紹介します
さあ 最初のステップが知りたいですか?
一番簡単な方法は このディレクトリ下の
ウォッチフェイスサンプルのうち 一つを実行することですよ
ちょうど良さそうな デジタルウォッチフェイスや
アナログウォッチフェイスが ありますね
この段階では 設定と レンダリングループを実行するための
2つのキーメソッドを 見ることができます
一般的に onCreate では インスタンス変数を設定しますが
これは ウォッチフェイスや キャンバスに
ビットマップオブジェクトを読み込むことや
オブジェクトを描くことが 含まれています
onDraw では ウォッチフェイスに表示するための
各フレームを レンダリングします
キャンバスに描くので 標準のビットマップを使用したり
線形描画機能を 使用することができます
パフォーマンスを 念頭に置いた方がいいですが
その理由は すべてのフレームで このコードが作動するからです
プロジェクトを作ったら
ウォッチフェイスの2つのメインモード
インタラクティブモードと 常に画面表示モードでの
カスタマイズの準備ができました
インタラクティブモードで ウォッチフェイスは
フルカラーのフルイドアニメーションを 多く表示します
ユーザーがウォッチに 集中している時は
この状態がほとんどです
常に画面表示モードでは
限定カラーパレットで 画面表示してください
そして1分に1回だけ アップデートされます
それでは2つのモードでの ユーザーカスタムオプションとして
メインとなるのは 何でしょうか
インタラクティブモードでの デフォルトテンプレート設定は
1秒に1回の アップデートとなっています
例えば アニメーションを プレイさせるために
さらに多く アップデートさせたい場合は
次の3つのステップが必要です
まず mUpdateTimeHandler を 削除します
そうしないと onDraw メソッドを
1秒に1回しか呼び込みません
次に onDraw メソッドを ウォッチフェイスが
最初に表示される時に 作動させる必要があります
これは onVisibilityChange メソッド下の フレームを
無効にすると OK です
そして最後に onDraw メソッドの
ラストフレームを無効にすることです
こうすることで onDraw ループを作動させて
フルイドアニメーションを 表示できるようになります
これでウォッチフェイスが持続的に アップデートされるようになりました
重要なのは ウォッチフェイスが フレームを無効にする前に
常に画面表示モードであるかを 確認することです
そうでない場合は アップデートループが 常に画面表示モードでも
持続的にバックグラウンドで 同じ作動をしているからです
これは電池が持たない 大きな原因となります
インタラクティブモードのことは 解決したので
次は常に画面表示モードについて お話ししましょう
常に画面表示モードで 開発者がとる一般的な行動の1つは
グレースケールや白か黒の グラフィックを選ぶこと
もう1つは 1分当たり1回以上 アップデートされる画面の構成要素―
つまり ウォッチフェイスの 時計盤の針や デジタルの秒表示などを
消去することです
ウォッチが常に画面表示モードに 入っているかを確認したい時
onAmbientModeChange メソッドで
オーバーライドしてください
一般的に 開発者は ウォッチが常に画面表示モードであるかを
表すインスタント変数を送信して
現在のフレームを無効にするでしょう
これは 再描画の トリガーとなります
そうすると 次の onDraw で
開発者が望むことを することができます
基本のカスタムが 解決できたら
次に いくつかの 仕上げに入ります
常に画面表示モードに加え ウォッチフェイスの API は
すべての状況でウォッチフェイスを 表示するための
追加のコンテクストを 開発者に提供します
次の2つの方法をお勧めします
まず ロービットの「常に画面表示モード」を サポートするアンドロイドウェアデバイスでは
スクリーンピクセルは オン/オフの どちらかしか選択できません
単にグレースケールデザインを 使用するだけでは
このようなスクリーン上で 正常に作動できません
例えば Santa Tracker の グレースケールデザインを
まったく調整せずに 使うとしましょう
そうすると ロービットでは このように表示されます
あまり美しくない画面が 目に入りますね
なので 代わりに この白黒デザインを実装しました
デバイスがロービットを サポートするかを確認したいなら
onPropertiesChange メソッドに オーバーライドしてください
そうすると開発者は ウォッチが
ロービットの常に画面表示モードを サポートするか確認できます
次は 個人的に一番好きな方法ですが
スクリーンに ピークカードが含まれているかを
確認する機能です
この方法で ウォッチフェイスデザインとの相互作用が
正常に作動しているか 確かめることができます
特に 常に画面表示モードには とても重要です
これがないと 左側に見える
目盛が邪魔で ピークカードを
読むことが難しくなります
最終デザインでは 枠のない黒の長方形を
ピークカードの後ろに描いて より良く見えるようにしましょう
さらに ウォッチフェイス スタイルクラスを使用すると
常に画面表示モードで ピークカードが正常に
表示できているかを 確認することができて
インタラクティブモードで 透明かそれとも不透明かを
確認することも可能です
さらに多くの機能を知るには 資料をチェックしてください
例えば 標準タイムゾーンを 変化する方法や
ウォッチフェイスに リアルタイム情報を表示させる方法や
そして ウォッチフェイス設定を モバイルデバイスから変更する方法などです
ホイ・ラムでした 皆さんが制作したウォッチフェイスで
時間を確認できることを 楽しみにしています