くうと徒然なるままに

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

Xamarin.Android でデバイスの Wifi のオンオフを切り替える

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);