Wi-Fi Direct制御用のFragment
では、Wi-Fi Directを制御する、UIのないFragment(WiFiDirectFragment.java)を実装していきます(リスト1)。すべてのコードを掲載することは難しいのでポイントのみを解説していきます。
設定画面でWi-Fi機能をONにしてアプリを起動した直後など、Wi-Fi関連には様々なイベントが発生します。Fragmentには、イベント発生時に呼ばれるコールバック・インタフェースを用意します*1。WiFiDirectCallbackPickerとWiFiDirectCallbackというインタフェースです。このインタフェースを介してコールバックを受け取ります。
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の取得と初期化を行っています。