Xamarin.Android (Xamarin.Forms) で開発をしていて、 Wifi のオンオフをプログラムから切り替えたい!って状況に接することがあると思います。(強制的に携帯ネットワークにせつぞくしたくなったりとか) そんなときに、 Xamarin.Android から 端末の Wifi の接続状態をコントロールしたいときのプログラムです。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="Wifi の状態を" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView1" /> <Button android:text="有効にする" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/WifiEnableButton" /> <Button android:text="無効にする" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/WifiDisableButton" /> </LinearLayout>
using Android.App; using Android.Net.Wifi; using Android.Widget; using Android.OS; namespace App1 { [Activity(Label = "App1", MainLauncher = true)] public class MainActivity : Activity { private WifiManager WifiManager; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); WifiManager = (WifiManager)ApplicationContext.GetSystemService(WifiService); var EnableButton = FindViewById<Button>(Resource.Id.WifiEnableButton); EnableButton.Click += (o, s) => EnableWifi(); var DisableButton = FindViewById<Button>(Resource.Id.WifiDisableButton); DisableButton.Click += (sender, args) => DisableWifi(); } private void EnableWifi() { WifiManager.SetWifiEnabled(true); } private void DisableWifi() { WifiManager.SetWifiEnabled(false); } } }
ポイント解説
WifiManager を取得
(WifiManager)ApplicationContext.GetSystemService(WifiService);