質問: 特定のアプリ起動時、特定のWi-Fiスポットに自動接続するというアプリを考えています。 Android または iPhone アプリのプログラム上から、無線LANアクセスポイントの検索、および検索された任意の Wi-Fi ネットワークへの接続は可能でしょうか。
回答: iosばかり人気でAndroidの実装方法が載ってなかったので書かせていただきます。 **WiFi接続まわりで苦戦したのでメモ**というブログの実装が凄く参考になる。お勧めです。 SSID名が決まっているなら、オープンか、ステルスを問わず、上記の情報で十分かと存じます。 蛇足という名の補足。 ### 無線LANアクセスポイントの検索方法 →Android Wi-Fi Tutorialの下の方、 `mainWifiObj.getScanResults`とかいてあるあたりがホットスポットの検索をしているところです。ただ、この場合hiddenSSIDの検索はできないので注意が必要です。 また、大前提として**端末の設定でWiFiがONになっていないとSSIDの検索結果、スキャン結果はどんな方法を用いても全てnullが返ってきたはず**です。(嘘をついていたら、訂正してください) 端末のWiFi設定をONにする方法は簡単に実装できますが、一般ユーザに対してWiFiをONにしますよ、とどのようにクッションを設けて通知するかは正直、難しい課題なのかなぁ、と存じます。 ### Wi-Fi ネットワークへの接続を検知する方法 →How to detect when WIFI Connection has been established in Android?の 二番目に多い投票数の回答を自分は実装しました。 ### Android端末のWi-FiがONになったことを検知する方法 上記ブログに掲載されていた、WiFi機能をONにするのは`端末によっては、切り替わるまで少々時間もかかるようなんで注意も必要ですね。`という話に関連して。 これは`android.net.wifi.WIFI_STATE_CHANGED`をbroadcastに設定してWifiManager.WIFI_STATE_ENABLEDがintentとしてキャッチされるのを待てば、良いと思います。上記に上げたワードでググればとりあえず実装が出てきます。 ...社内で開発用のサポートアプリとして実装した時は、Huaweiというメーカーの端末がintentを通知するまでが凄く長かったので、途中で処理が落ちることを前提として機械的に接続回数を5回程度リトライするようにし、疎通のリッスンを諦めた記憶があります。 以上、ご参考になれば幸いです。