Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidアプリからプログラムでWi-Fiネットワークに接続する方法【サンプルコード付き】

はじめに

このチュートリアルでは、Androidアプリからプログラム的にWi-Fiネットワークへ接続する(Wi-Fiの有効化・無効化を行う)方法を解説します。WifiManagerクラスとスイッチ(Switch)ウィジェットを組み合わせることで、ユーザーの操作に応じてWi-Fiを切り替えられるシンプルなサンプルアプリを作成していきます。

ステップ1:Android Studioで新規プロジェクトを作成

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。

ステップ2:レイアウトファイル(activity_main.xml)の実装

res/layout/activity_main.xml に以下のコードを記述します。画面中央にWi-Fiの状態を表示するTextViewと、切り替え操作用のSwitchを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/activity_main"
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="MainActivity">
    <Switch
        android:id="@+id/switchWifi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/switchWifi"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="42dp"
        android:text="WiFi OFF"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

ステップ3:MainActivity.javaの実装

src/MainActivity.java に以下のコードを記述します。スイッチのON/OFFに応じて WifiManager.setWifiEnabled() を呼び出し、Wi-Fiの有効・無効を切り替えています。

import android.content.Context;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Switch WiFiButton;
    TextView textview;
    WifiManager wifiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textview = findViewById(R.id.textView);
        WiFiButton = findViewById(R.id.switchWifi);
        WiFiButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    textview.setText("WiFi ON");
                    EnableWiFi();
                } else {
                    textview.setText("WiFi OFF");
                    DisableWiFi();
                }
            }
        });
    }

    public void EnableWiFi() {
        wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        wifiManager.setWifiEnabled(true);
    }

    public void DisableWiFi() {
        wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        wifiManager.setWifiEnabled(false);
    }
}

ステップ4:AndroidManifest.xmlへの権限追加

Wi-Fiの状態を取得・変更するためには、適切な権限の宣言が必要です。androidManifest.xml に以下のコードを追加してください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリの実行

それではアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提としています。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。実行対象として自分のモバイルデバイスを選択すると、端末に以下のような画面が表示されます。

AndroidアプリからプログラムでWi-Fiネットワークに接続する方法【サンプルコード付き】

AndroidアプリからプログラムでWi-Fiネットワークに接続する方法【サンプルコード付き】

補足:Android 10以降での注意点

WifiManager.setWifiEnabled() メソッドは、API 29(Android 10)以降ではサードパーティアプリからの呼び出しが非推奨となり、システムアプリ以外では機能しなくなりました。Android 10以降をターゲットとする場合は、Settings.Panel.ACTION_INTERNET_CONNECTIVITY を使用してインターネット接続の設定パネルを表示し、ユーザー自身にWi-Fiをオンにしてもらう方法が推奨されています。また、ACCESS_WIFI_STATE(状態の取得)と CHANGE_WIFI_STATE(状態の変更)の2つの権限は必須である点にも注意してください。

  1. Wi-Fiネットワークに簡単に接続・切断・削除する方法【スマホ・PC両方対応】

    現代において、Wi-Fiネットワークは私たちの生活に欠かせないインフラの一つとなっています。Wi-Fiを通じてさまざまなプラットフォームやサービスに接続できるため、日常のあらゆる場面で効率よく作業を進められるようになりました。 Wi-Fiとは「Wireless Fidelity(ワイヤレス フィデリティ)」の略称で、インターネット回線のある場所ならどこでも利用できる無線通信技術です。スマートフォンやパソコンなど、複数の機器をケーブルなしでネットワークにつなぐことを可能にしています。 この記事では、モバイル端末とパソコンのそれぞれについて、Wi-Fiネットワークへの接続方法、切断方法、そして不要

  2. 【Android】WPSを使ってWi-Fiネットワークに接続する方法を徹底解説

    無線ネットワークにもっと手軽に接続したいなら、AndroidのWPS機能の活用がおすすめです。ただし、Android 9以降のバージョンではこの機能が利用できない場合がある点に注意が必要です。本記事では、WPSプッシュボタンを使ってAndroid端末をWi-Fiに接続する具体的な方法を詳しく解説します。 AndroidでWPSを使ってWi-Fiネットワークに接続する方法 WPS(Wi-Fi Protected Setup)は、ルーターとデバイス間の接続をより速く、より簡単に行うための機能です。2006年にCisco社によって導入されました。これは、パスワードで暗号化された無線ネットワークに