まわりで流行っていたので Xiaomi Mi Smart Bandを購入して、3年ぐらい付けていて「腕に時計があると正確な時間が分かって便利なのでは????」ということに気付いたのだけど、そうなると次は自分で自由に機能をカスタマイズしたくなりスマートウォッチ的なものが欲しくなってきたのでGalaxy Watch5を買った。
Galaxy Watch5もしばらく使っていて、腕でモバイルOSが動いているとプログラムが動かせて便利なのではということが段々分かってきたのでこれからWear OS互換のスマートウォッチ向けのAndroidアプリ開発をはじめたい人への案内の記事を書くことにした。
デバイスを選ぶ
スマートウォッチは色々なメーカーから出ていて選ぶのが大変なんだけど「自作Androidアプリが動く」の条件だと現実的にはWear OS 3系を搭載したSamsungのGalaxy WatchかGoogleの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
をオーバライドして画面の描画命令を作っていく。
以下にサンプルレポジトリがある。
Jetpack Composeでアプリを作る
Wear OS向けのマテリアルコンポーネントが用意されていて、Android Studioで開始できる。
前述のリポジトリにもいくつかComposeのサンプルがある。
https://github.com/android/wear-os-samples
デバッグ環境を用意する
エミュレータと実機でデバッグできる。基本はエミュレータで開発し、実機でしか動作確認できないセンサー系のE2Eは実機を開発者モードに変更してやってる。
エミュレータを使った開発風景。これは転倒を検知するイベントがGalaxy Watch5に備わっていてそれを使った機能をComposeで書いてる。
Viewを使ったサンプルコードが以下にある(動作確認のために実際に転倒しろと書いてある・・)
Health Connect
Health ConnectはAndroidが提供するヘルスケアデータのハブとなるプラットフォームのことで、これを使うことでWatchで収集したデータを自分のアプリで活用できる。
たとえばGalaxy Watchで収集したデータをGoogle Fitで集計して可視化したり、逆にサードパーティのアプリで入力したデータを自分のアプリで読み込むなどができる。
動作端末(Android)に以下のサービスを入れておく必要がある。
アプリのサンプルが例によってGitHubにある。
https://github.com/android/health-samples/
Health ConnectがAndroid Phone向けの連携アプリで、Health Services がWatch向けのComposabらないViewのプロジェクトで、Health Platformが歴史的経緯以下略みたいなやつ。
自分はWatch向けのアプリを書きたいのでHealth Servicesを参考にした。
コラム: 脱スマートフォン
スマートフォンを所持せずWatch単独でどこまでできそうかをここ最近試行錯誤していたが
- イアホンをWatchに接続してオンラインの音楽をストリーミングで聴く
- Watchに音声入力でテキストを打ち込んでチャットをする
- 電子書籍をtext-to-speechで読む(Android端末でのオーディオブック環境 - laisoを参考)
- NFC決済で電車に乗る、支払いをする
ぐらいは余裕でこなせそうで、「移動時にスマートフォンやタブレットを持ち運ばずにWatchのみで過す」という生活はすでに実現できそうだった。
今回買ったGalaxy Watch5はWi-Fi版にしたので単独で通信できないのだけど、次に何か入手する時はセルラー対応版にして、スマホを捨てて生活してみようと思う。
制約としてはディスプレイの小ささと入力系操作の貧しさがあるので、音声入出力とかUIで工夫しないといけなさそうではある。
*1:OSが合体したり色々あった https://business.nikkei.com/atcl/gen/19/00297/053100015/