face)カスタマイズアプリの実装方法を解説する。APIをリリースした。APIを使えば、自由に盤面をカスタマイズすることができる。1分毎に美女の写真が変わる、夢のような盤面アプリの開発も可能だ。今回は、1分ごとに背景の画像が変わる盤面の実装方法を紹介する。btraxのアイドル、クーパー君の画像が変わるかわいいアプリだ。Playにも公開しているのでぜひインストールしてほしい。Playまた、ソースコードをGithubで公開しているので、自分のお気に入りのアイドルや家族やペットの写真などを使って、オリジナルの盤面を作って知り合いに自慢してほしい。ソースコードアプリの動作の様子は、次の動画で紹介している。1分ごとに盤面が変わり、Ambientモード(スクリーンオフ)時には白黒の表示に変わる。Wearは盤面を自由に選べることが大きな魅力だ。Playからインストールした盤面を、設定画面から選択することで簡単に設定できる。Playにはクラシックなデザインの盤面、デジタルの芸術性の高い盤面、カレンダーを表示するなどの機能を充実させた盤面、スマートフォン内の画像を背景として設定できる盤面などの様々なアプリが存在している。faceを検索するとたくさん見つかるのでぜひ試してほしい。Wearの盤面着せ替えアプリは最も流行すると予想されるカテゴリの1つだ。2014年12月現在、盤面アプリで最も人気があるものは、10万ダウンロードを超えている。デバイスの普及数を考慮すると驚くべき数字であり、高い需要があることが分かる。実は、2014年12月10日までにリリースされている盤面アプリは、非公式な方法で実装が行われたものだ。2014年7月には、2014年中に公式のAPIを提供するのでそれまでは非公式な方法で盤面カスタマイズアプリを作るなとGoogleがアナウンスしている。かかわらず、多くの開発者が盤面アプリを開発していたわけだ。APIが公開されたため、今後はますます多くの盤面カスタマイズアプリが登場するだろう。これまでの非公式の実装方法と比べると、盤面カスタマイズアプリを作りやすくなっている。次のような機能が追加されている。通知のカード、インジケーターの表示方法を盤面アプリで設定できるようになったアンビエントモード(スクリーンオフ)状態での表示をカスタマイズできるようになった1つのアプリに、複数の盤面を同梱して配信することが可能になったまた、Googleが公式にサポートしたことで、盤面アプリに本腰を入れ始めたようだ。Playの盤面カスタマイズアプリの特集ページが公開された。APIについての詳細は、以下の記事を参照してほしい。BlogGoogleからのアナウンス。Wearのカスタム文字盤が解禁、パックマンからデザイナーまで多数。engadget開発環境&実行環境構築まず開発環境と、実行環境の構築について説明したい。APIを使う上で気をつけなければいけないポイントを中心に解説する。Studioが推奨されている。21)がインストールされているか確認し、もし入っていなければインストールする必要がある。Studioで新規プロジェクト作成時に、Wearアプリにチェックを入れるだけである。5.0(Lollipop)にするように注意しよう。Wear用のエミュレータを用いる。APIを実行するため、実機の場合もエミュレータの場合も、OSが5.0.1のものを利用してほしい。Androidのエミュレータを使う場合は、そのままでは動作が遅くて使い物にならないので、高速化することを勧める。高速化については他のサイトで分かりやすい記事があるので、そちらをご覧いただきたい。以下の記事の通りに設定すると、さくさくストレスなく動作するようになる。ついては、btraxでは以下のブログを参考にさせていただきたので紹介させていただく。@korodroid)Gradleの設定それでは実装方法に入る。mobileのbuild.gradleのdependenciesを以下のように設定する。'com.google.android.gms:play-services:6.5.+'}次に、wearのbuild.gradleのdependenciesを以下のように設定する。盤面アプリには、PROVIDE_BACKGROUNDとWAKE_LOCKのパーミッションが必要である。WearのAndroidManifest.xmlに以下のように追加する。mobileのAndroidManifest.xmlには、Wearで定義したすべてのパーミッションを定義する必要がある。そのため、mobileのAndroidManifest.xmlにもPROVIDE_BACKGROUNDとWAKE_LOCKのパーミッションを追加しよう。APIでは、盤面は1つのServiceとして定義される。ここではMyWatchFaceServiceを実装することにしよう。WearのAndroidManifest.xmlに以下のようにServiceを定義する。android:labelは盤面一覧に表示される盤面名、meta-dataのcom.google.android.wearable.watchface.previewは盤面のプレビュー画像である。ユーザーに盤面を設定してもらうために非常に重要だ。Faceの一覧画面が表示される。同時に、res/xml/watch_face.xmlを以下のように作成しておく。/>これでAndroidManifest.xmlは完了だ。盤面用のServiceの実装CanvasWatchFaceServiceを継承し、盤面用のサービスを実装する。今回は、処理の流れが分かりやすいように、Googleのサンプルアプリを元に、いくつか処理を単純化した。秒針は実装せず、盤面表示中にタイムゾーンが変更されることも考慮しない。Ambientモードも考慮していない。CanvasWatchFaceService.Engineを継承したクラスを用意し、それをonCreateEngine()でインスタンス化する。APIでは、canvasを用いて盤面を描写する。今回描写するのは、次の3つだ。自分の好きな画像を背景に表示し、時間に応じて画像を変更する。今回は1分ごとに画像が切り替わるようにした。アンビエントモード(スクリーンオフ)時には、背景は黒い画像に変更して輝度を下げることで、消費電力を抑える。線をcanvasで描写する。画面の中心を始点として、終点を時間に応じて計算しながら斜めの線を描画する。通常では赤色だが、アンビエントモードではやや暗い白色に変更する。短針と同様に、時間に応じて斜めの線を描画する。通常は白色だか、アンビエントモードではやや暗い白色に変更する。.......}盤面更新のタイミングこのままでは初期化されるだけで盤面は更新されない。表示を更新したいタイミングで、invalidateメソッドを呼び出すと、onDrawメソッドが呼ばれて盤面が更新される。invalidateメソッドを呼ぶべきタイミングは次の場合だ。onTimeTick()1分ごとに呼ばれる。この中でinvalidateを呼び出して、毎分盤面を更新する。盤面に設定している間は、たとえスクリーンがオフになったとしても呼ばれ続ける。inAmbientMode)Ambientモード(スクリーンオフ状態)が切り替わったときに呼ばれる。スクリーンオフになったときには電池消費を抑えるために、秒針やアニメーションなどの頻繁に実行が必要な処理を停止し、全体をモノクロ表示とし、さらに白の部分の面積を減らすことが推奨されている。秒針やアニメーションはないので、アンビエントモードになった際に盤面の背景を黒にし、短針、長針もモノクロとした。........}たったこれだけで完成である。Studioからインストールしても、通常のアプリのようにアプリ一覧には表示されない。盤面一覧の中に表示されるので、選択するとオリジナルの盤面に設定できる。ソースコードはGithubに公開しているので、カスタマイズしてオリジナルの盤面を作ってほしい。Playにも公開しているのでぜひインストールしてほしい。btraxのアイドル、クーパー君の画像が1分ごとに変わるかわいいアプリだ。Playなお、今回は簡単化のためにlow-ambientモードやタイムゾーンの変更時の処理などいくつか省いた部分がある。Facesを参照して実装してほしい。Wearのアプリを開発を開始。年内のリリースを予定している。その経験を元に得られた情報や、知見をこちらのブログに定期的にポストする予定。今後も、デバイスごとのUXに於ける長所、短所、それぞれの開発方法の特徴や、UIデザインのポイントなど、スマートウォッチについての情報を定期的に発信していく。クライアントとの共同開発プロジェクトへの参加企業も現在募集中。ご興味のある方は、tokyo@btrax.comまで。usbtraxはデザインサービスを通して企業の事業創出とトランスフォーメーションを実現します。