2016/10/20
Android で Wi-Fi 機能の有効・無効の変化をイベントとして取得する
この記事は Android の Wi-Fi 実装に関する情報のまとめ の一部として書かれました
Wi-Fi の状態変化を知るためには "android.net.wifi.WIFI_STATE_CHANGED"
action を監視する BroadcastReceiver
を使います。
BroadcastReceiver のコード
WifiManager.getWifiState()
で取得できる状態に変化が起こった場合に呼ばれるコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class WifiStateWatcher extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { // "android.net.wifi.WIFI_STATE_CHANGED" // 変化前の状態を取得 int previousState = intent.getIntExtra( WifiManager.EXTRA_PREVIOUS_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); // 変化後の状態を取得 int state = intent.getIntExtra( WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); // 取得できるのは以下の状態 // WifiManager.WIFI_STATE_DISABLED // WifiManager.WIFI_STATE_DISABLING // WifiManager.WIFI_STATE_ENABLED // WifiManager.WIFI_STATE_ENABLING // WifiManager.WIFI_STATE_UNKNOWN } } } |
参考
登録方法1
AndroidManifest.xml に登録する方法
常に変化を監視したい場合は、以下のように BroadcastReceiver
を AndroidManifest.xml に追記します。
1 2 3 4 5 | < receiver android:name = ".WifiStateWatcher" > < intent-filter > < action android:name = "android.net.wifi.WIFI_STATE_CHANGED" /> </ intent-filter > </ receiver > |
登録方法2
コードで登録する方法
特定の Activity が起動している間だけ監視したい場合などは、以下のように動的に登録します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // Activity 等の Context の中で WifiStateWatcher mWifiStateWatcher = new WifiStateWatcher(); @Override protected void onResume() { super .onResume(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); // "android.net.wifi.WIFI_STATE_CHANGED" registerReceiver(mWifiStateWatcher, intentFilter); } @Override protected void onPause() { super .onPause(); unregisterReceiver(mWifiStateWatcher); } |
パーミッション
このコードを実行するのに特別なパーミッションは必要ありません。
0 件のコメント:
コメントを投稿