nothing phone(4a)pro用 Fighter'sCounter
ついにnothing phone (4a)proを購入した。glyphドットマトリクスがとにかくかっちょいい!
androidデビューしたのは、スマホアプリ開発の敷居が低いからということも大きな理由。早速何かアプリをつくりたいが、やっぱりglyphインターフェイスを使ったものにしたいなぁと。
開発プラットフォームはAndroid Studio. コーディングはgeminiさんにお願いすれば、なんとかなりそう。
こんなものを作ってみることにした。
「Fighter's Counter」
毎晩入浴前にダンベルを使った筋トレをしているけど、回数を数えるのがなんか面倒。そこで、media pipeをつかった骨格検知を利用して、ワンストロークを記憶させ、カメラで認識した骨格の動きを積算してカウントしてみようというアプリ。フロントカメラでの自撮りではなく、背面の広角カメラを使って自分向きに背面が向くようにすることで、glyphインターフェイスにカウント表示ができる。動作は以下の通り。
- アプリを起動
- 背面カメラを自分に向けて(glyphインターフェイスが自分で見える向き≠画面は見えない向き)立てかけると、自分の腕の関節位置がドットマトリクスで描画される。
- 英語でnothing: "System calibrating. Please remain still"
- ユーザーが筋トレのワンストロークの開始ポーズでじっとしていると、ベースポーズ(初期姿勢)が設定され、動作収録待ち状態に移行し、nothing: "Say start to start recording."
- ユーザー「start」もしくは「スタート」
- nothing: "Capturing movement, Say stop when you've done." 位置が大きく動く関節の移動量積算と、肩ー肘ー手首x2の4関節の角度変化積算を記録開始。
- ユーザー「stop」で記録終了。nothing: "movement captured, how many counts you want? default is 70." デフォルトが70回なのは、今毎日やっているトレーニングが70回なので。
- ユーザー「30 times」
- nothing: " '30 times' is that correct?"
- ユーザー「yes」
- nothing: "Workout starting. Go!"
- ユーザー筋トレ1回でnothing: "29"(glyphインターフェイスにも数値が表示。円周上にプログレスバー的な進捗を表示)
- ユーザー筋トレ2回でnothing:"28"
- 以下同様
- ユーザー筋トレ30回完了でnothing:"Splendid work! You've done exceptionally well. Would you like to try another workout?"
- ユーザー「yes」でnothing:"please remain still"に移行
- ユーザー「no」でnothing: "Cheerio! See you next time." でアプリ終了
なお、おしゃれにするため(かつ世界でつかえるように)コマンドはすべてUK Englishとした。(日本語も一部対応)
まだちょっとバグがあるけど、ほぼ上記の動作が実装できた!
以下バグ
- 日本語「スタート」の認識率が低い
- ユーザーコマンドの認識率を上げるため、「ポン」というプロンプト音を鳴らそうとしているがうまく鳴らない
- glyphインターフェイスに描画される関節位置が鏡像になっていないので、右手を上げると左手が上がるw
- ワークアウト完了後のglyphインターフェイスの初期化に失敗することがある。
- (ちょっと致命的)ごくたまーにカウントしてくれないことがある。筋トレだけにめっちゃつらい。
もう少しブラッシュアップしたら公開してみたい!