前回からの続きです。
こういう構成で、ローカルネットワーク環境だけで使用できる、みまもりカメラの仕組みを改良していきます。
今回は、複数クライアント端末が同時に接続できるようにしつつ、操作画面を使いやすくしました。
1. 複数クライアントが同時に接続できるようにする
GitHub CopilotでClaude 3.7 Sonnectを指定して、このようなコードを作りました。
修正したコードは、MainActivity.ktとCameraCapture.ktのみです。
◾️MainActivity.kt gist.github.com
◾️CameraCapture.kt gist.github.com
2. 画面レイアウトの改善
前回はテスト的に作ったので、画面イメージが考慮されていませんでした。
そこで、サーバ (Androidアプリ)とクライアントの画面イメージをPowerPointで作り、Claudeを通じて実装例を出してもらいました。
PowerPointで作成した画面イメージです。
このような画像を添付した上で、「こういうGUIで処理ができるようにアプリを改修してほしい」とClaudeに依頼したところ、1回でGUIイメージに合った画面と操作ができました。簡単な図形で作ったものでも解釈してくれるのはとてもよいですね。
3. 動作結果
サーバ役のAndroidスマートフォンではこのような画面ができました。
続いて、クライアント側の画面です。
このように、PortraitもLandscapeも、どちらもPowerPointで書いた通りの画面になりました。
一応一通り動いたので、妻にも説明して使ってみることにしました。ただ、まだいくつか問題があることがわかりました。
問題 (解決したもの)
・IPアドレスが変わってしまう -> ルータの設定でSurface DuoのIPを固定にした
・Surface Duoの仕様で、スリープまでの時間が30分にしかできない。 -> 開発者モードにして、充電中ならばスリープしない設定が可能とわかった
問題 (まだ解決していないもの)
・スリープして復帰するととwebsocketサーバが落ちてしまう
・アプリを起動して30分未満でも、クライアント側からアクセスできないことがある
・一度サーバアプリがバックグラウンドに入ると、復帰後にアプリが落ちてしまう
4. おわりに
ひとまず動くようになりました。ただし、安定性の観点でまだ課題があるため、引き続き改善したいと思います。