くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Xamarin.Android で Wifi との接続状況を取得する(シンプル Ver と 詳細 Ver)

Xamarin.Android で Wifi との接続状況を取得してあれこれしたいって場面があると思います。(Wifi と確実に接続してから通信をしなければいけない状況など....

Android では幾つかの方法を利用することで Android 端末の Wifi との接続状況を取得することができます。

今回は、2種類の詳しさで WIfi との接続情報を取得する方法について書いていきます。(必要以上に詳しい情報が必要な場面とそうでない場面とであるからね!

シンプル Ver

得られる結果は以下のページにリストアップされています。

https://developer.xamarin.com/api/type/Android.Net.NetworkInfo+State/

https://lh3.googleusercontent.com/-nDJsY58Vplk/WfaZ3lNtXZI/AAAAAAAANws/ZE_KAxiXWvEr1lsp1iqwJQMMt0h0Xw1PACHMYCw/s0/chrome_2017-10-30_12-17-52.png

// Connectivity Mange を取得するプロパティを適当に生やす
private ConnectivityManager ConnectivityManager => (ConnectivityManager)GetSystemService(ConnectivityService);
// 接続状況を表示するための Label を取得
var SimpleLabel = FindViewById<TextView>(Resource.Id.SimpleNetworkLabel);
// アクティブになっているネットワークを取得
var SimpleWifiState = ConnectivityManager.ActiveNetworkInfo;
// 今回は、 Wifi 以外の場合は興味ないので返しておく
if (SimpleWifiState.Type != ConnectivityType.Wifi) return;
// 結果を見やすくするためにテキスト化して表示
SimpleLabel.Text = SimpleWifiState.GetState().ToString();

詳細 Ver

得られる結果は以下のページにリストアップされています。

SupplicantState Class (Android.Net.Wifi) | Microsoft Docs

https://lh3.googleusercontent.com/-v3yHoiXx10U/WfaZmCPdbgI/AAAAAAAANwo/A914yTAiYykiFIQZpjhGBQSBMo8dVHJIgCHMYCw/s0/chrome_2017-10-30_12-16-41.png

// WifiManger を利用して取得
private WifiManager WifiManager => (WifiManager)GetSystemService(WifiService);
// 接続状況を表示するための Label を取得
var detailLabel = FindViewById<TextView>(Resource.Id.DetailNetWorkStateLabel);
// 結果を見やすくするためにテキスト化して表示
detailLabel.Text = WifiManager.ConnectionInfo.SupplicantState.Name();