Goodroid

GoodroidはAndroidアプリ開発のための情報をコラムやブログで紹介するサイトです。


Wi-Fi接続を切り替える
ここではWi-Fi接続を切り替える方法を確認していきます。

端末のWi-Fi接続を切り替えるためには「 android.net.wifiManager 」クラスの「 setWifiEnabled 」メソッドを用います。サンプルアプリではトグルボタンでオンとオフを切り替えています。

※サンプルコードはエミュレータでは機能しないため実機で確認してください。

WiFiActivity
package goodroid.sample.wifi;

import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ToggleButton;
import android.app.Activity;

public class WiFiActivity extends Activity implements OnClickListener{

    private ToggleButton toggle;
    private WifiManager wifi;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wi_fi);

        // WifiManagerのインスタンスを取得する
        wifi = (WifiManager) getSystemService(WIFI_SERVICE);

        // トグルボタンのインスタンスを取得する
        toggle = (ToggleButton) findViewById(R.id.toggleButton1);

        // トグルボタンの状態初期化
        if(wifi.isWifiEnabled()){

            // 現在のWifiがONだった場合、トグルボタンをONに切り替える
            toggle.setChecked(true);

        }else{

            // 現在のWifiがONだった場合、トグルボタンをOFFに切り替える
            toggle.setChecked(false);
        }

    }

    @Override
    public void onClick(View v) {

        if(wifi.isWifiEnabled()){

            // 現在のWifiがONだった場合、OFFに切り替える
            wifi.setWifiEnabled(false);

        }else{

            // 現在のWifiがOFFだった場合、ONに切り替える
            wifi.setWifiEnabled(true);
        }
    }

}

activity_wi_fi.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="ToggleButton" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:text="Wi-Fi状態"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>


wifi Manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="goodroid.sample.wifi"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".WiFiActivity"
            android:label="@string/title_activity_wi_fi" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Wi-Fiの状態を変更するためには10行目、11行目にあるようにManifestに以下の2つのパーミッションを追加する必要があります。
忘れるとアプリが起動しません。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>


実行結果

3524 views | コメント:1 | 2012-09-30
コメント
Commented by くまさん at 2017-07-25 06:12:35
ご質問をさせて下さい。
このアプリにSSID:test、wepキー:password
のwifiに接続するようにするにはどのようにしたらいいでしょうか?

ご教授、宜しくお願い致します。
コメントの投稿
名前 (必須)

メールアドレス (非公開)

本文(必須)

パスワード (必須)
(半角数字4桁)