Wear OSアプリ開発入門

まわりで流行っていたので Xiaomi Mi Smart Bandを購入して、3年ぐらい付けていて「腕に時計があると正確な時間が分かって便利なのでは????」ということに気付いたのだけど、そうなると次は自分で自由に機能をカスタマイズしたくなりスマートウォッチ的なものが欲しくなってきたのでGalaxy Watch5を買った。

Galaxy Watch5もしばらく使っていて、腕でモバイルOSが動いているとプログラムが動かせて便利なのではということが段々分かってきたのでこれからWear OS互換のスマートウォッチ向けのAndroidアプリ開発をはじめたい人への案内の記事を書くことにした。

バイスを選ぶ

スマートウォッチは色々なメーカーから出ていて選ぶのが大変なんだけど「自作Androidアプリが動く」の条件だと現実的にはWear OS 3系を搭載したSamsungのGalaxy WatchGoogleのPixel Watchぐらいしか選択肢はないと思っていて(情勢の伺える記事:2022年を振り返る。スマートウォッチ編)、自分の場合はPixel Watchが近場で売ってなかったのでGalaxy Watchにした。

Watch Faceを作る

Watch FaceというのはOSでいうデスクトップ環境の部分で、プログラムを作成して細かくカスタマイズ可能になっている。

簡易的なものはSamsungが提供しているWatch Face StudioをPCにインストールすると作成できる(Googleデベロッパーサイドにもsamsung.comからダウンロードせよと書かれている)*1

内部的には独立したAndroidアプリになっていてコードで記述することもでき、androidx.wear.watchface.Rendererをオーバライドして画面の描画命令を作っていく。

以下にサンプルレポジトリがある。

https://github.com/android/wear-os-samples/blob/main/WatchFaceKotlin/app/src/main/java/com/example/android/wearable/alpha/

Jetpack Composeでアプリを作る

Wear OS向けのマテリアルコンポーネントが用意されていて、Android Studioで開始できる。

developer.android.com

前述のリポジトリにもいくつかComposeのサンプルがある。

https://github.com/android/wear-os-samples

デバッグ環境を用意する

エミュレータと実機でデバッグできる。基本はエミュレータで開発し、実機でしか動作確認できないセンサー系のE2Eは実機を開発者モードに変更してやってる。

developer.android.com

エミュレータを使った開発風景。これは転倒を検知するイベントがGalaxy Watch5に備わっていてそれを使った機能をComposeで書いてる。

Viewを使ったサンプルコードが以下にある(動作確認のために実際に転倒しろと書いてある・・)

developer.samsung.com

Health Connect

Health ConnectはAndroidが提供するヘルスケアデータのハブとなるプラットフォームのことで、これを使うことでWatchで収集したデータを自分のアプリで活用できる。

developer.android.com

たとえばGalaxy Watchで収集したデータをGoogle Fitで集計して可視化したり、逆にサードパーティのアプリで入力したデータを自分のアプリで読み込むなどができる。

動作端末(Android)に以下のサービスを入れておく必要がある。

play.google.com

アプリのサンプルが例によってGitHubにある。

https://github.com/android/health-samples/

Health ConnectAndroid Phone向けの連携アプリで、Health ServicesWatch向けのComposabらないViewのプロジェクトで、Health Platformが歴史的経緯以下略みたいなやつ。

自分はWatch向けのアプリを書きたいのでHealth Servicesを参考にした。

コラム: 脱スマートフォン

スマートフォンを所持せずWatch単独でどこまでできそうかをここ最近試行錯誤していたが

ぐらいは余裕でこなせそうで、「移動時にスマートフォンタブレットを持ち運ばずにWatchのみで過す」という生活はすでに実現できそうだった。

今回買ったGalaxy Watch5はWi-Fi版にしたので単独で通信できないのだけど、次に何か入手する時はセルラー対応版にして、スマホを捨てて生活してみようと思う。

制約としてはディスプレイの小ささと入力系操作の貧しさがあるので、音声入出力とかUIで工夫しないといけなさそうではある。

*1:OSが合体したり色々あった https://business.nikkei.com/atcl/gen/19/00297/053100015/