Wi-Fi Direct制御用のFragment

 では、Wi-Fi Directを制御する、UIのないFragment(WiFiDirectFragment.java)を実装していきます(リスト1)。すべてのコードを掲載することは難しいのでポイントのみを解説していきます。

リスト1●Fragmentのプログラム(WiFiDirectFragment.javaの一部)
リスト1●Fragmentのプログラム(WiFiDirectFragment.javaの一部)
[画像のクリックで拡大表示]

 設定画面でWi-Fi機能をONにしてアプリを起動した直後など、Wi-Fi関連には様々なイベントが発生します。Fragmentには、イベント発生時に呼ばれるコールバック・インタフェースを用意します*1。WiFiDirectCallbackPickerとWiFiDirectCallbackというインタフェースです。このインタフェースを介してコールバックを受け取ります。

*1 本来ならば画面表示用のFragment、Wi-Fi Direct用のFragment、ゲーム用のFragment、それを統べるActivityという構成が望ましいのですが、誌面の都合により簡略化しています。また、ソースコード中に文字列をベタ記述していますが、この記述はよいスタイルではありません。多言語化を意識し、リソースXMLへ切り出すようにしましょう。

 Wi-Fi Directのパッケージである「net.vvakame.wifiox.wifidirect」について、利用側から参照されるのはWiFiDirectFragmentだけなので、クラスやメソッドの可視性について、次の三つのルールを設けました。(1)OS側から通知を受け取るためのイベントリスナーを実装するメソッドは可視性を変更できないためpublicとする、(2)外部から利用される必要があるメソッドはpublicとする、(3)内部的に利用されるクラスやメソッドはpackage privateとする、です。

 リスト1の下方に記述するリスト2のonAttachメソッドでは、(1)で自分のデバイス用のコールバックを取得し、(2)でWiFiDirectBroadcastReceiver用のIntentFilterを用意しています。その後(3)で、WifiP2pManagerの取得と初期化を行っています。

リスト2●onAttachメソッド
リスト2●onAttachメソッド
[画像のクリックで拡大表示]