Android 端末をサーバーにする(ServerSocket)

所有しているAndroid端末が8台になりました・・・・
メールが来るたびに全部の端末が通知音を鳴らすのでうるさくて困ってます。

これを解決したい!

<------------------------>
試しに作りました。
http://www.youtube.com/watch?v=Zf2MzMLekeg&feature=youtube_gdata_player

<------------------------>




1台以外はサイレントモードにしておけばいいんですが、使っているうちに音量を上げてしまっています。

大きな問題でもないんですが、寝ている時に音がなると鬱陶しいので全部の端末を簡単にサイレントにしたいんです。

以前作ったアプリ(音量設定cVolume)はスケジュール機能があるので、決まった時間になると音量を自動で設定します。これで十分満足はしてます。

これは決まった時間になったら・・・しかもすべての端末に設定をしなければいけません。
面倒です。

ということで、1台の端末から全部の端末を制御してしまおうと思いました。

今回作ろうとしているものは電池消費が激しくなるとおもわれるのでマーケットへは公開しません。
「ただ作りたい」それだけです。

受け側(音量を設定される側)と送り側(音量操作をする側)に分けてアプリを作ります。実際はひとつのアプリで完結させます。

受け側7台をServerSocket を使って待機します。送り側1台で無線LAN内にある端末を検索してSocketを使って各端末に音量設定命令を送ります。受け側は命令受信、音量設定完了のメッセージを送り側に返信します。

これだけです。

ServerSocket

bind するポートは 8080 です。ドキュメントに書かれているのかどうかわかりませんが、このポート以外はバインドできませんでした。


IPアドレスを検索する

無線LAN内にある端末の検索は ping を送信して応答があったIPアドレスのリストを作成します。ソケット接続で応答があるものを残します。
IP アドレスはよく変わるので保存しません。所有している端末数はわかっているので検索に余分な時間がかからないように工夫します。さらに、無線LAN機器とかPCとかの台数もあるので考慮します。


受け側

接続待機をするための設定画面を用意します。
サービスを起動、終了するための画面を想定しています。
リブート対応やサービスの生死確認程度をします。
設定画面以外は不要だと思います。通知を出しておくかどうかは後ほど検討します。
マーケットに出さないから通知はいいかも?送り側に設定状況のデータを送ることができればいいし

送り側画面

端末リスト画面
受け側端末の現在の音量状況表示画面
送信用データ作成(音量設定)画面
接続中ダイアログ、送信中ダイアログ、送信完了ダイアログ

ここまで必要ないかもしれませんね

ついでに、着信音を再生させる機能をつければ・・・
端末どこにある?で探しやすいかも?何かの真似です。


今回からしばらくは技術調査記事を書こうと思います。

+1 を押してもらえば記事を書く速度が早くなるので是非おしてください。

+1 の数で作業の優先順位を決めてたりします(笑





0 件のコメント:

コメントを投稿