Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) WIFI 와이파이 연결하기

안드로이드 개발
반응형

안드로이드(Android) WIFI 와이파이 연결하기

 

개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2

 

프로그램을 설명하자면 Switch 형태로 된 위젯을 On/Off 하게 되면

이벤트가 발생하여 WIFI 를 연결/해제 하게 된다.

 

Switch 위젯은 휴대폰 환경설정에 가면 커짐/켜짐 이라는 부분을

볼수 있다. 이것이 Switch 위젯을 사용한 모습이다

아래 주소는 위젯 API 에 대한 설명을 해놓은 사이트 주소가 된다.

Switch 위젯은 API 14 Level 이상에서 사용가능하다.

http://developer.android.com/reference/android/widget/Switch.html


Layout Xml 은 다음과 같다

<Switch
        android:id="@+id/wifi_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="110dp"
        android:background="@android:color/background_dark"
        android:checked="false"
        android:text="Wi-Fi Settings"
        android:textColor="@android:color/white"
        android:textOff="OFF"
        android:textOn="ON" />


다음은 WIFI 기능을 구현하기 위해서 Android 제공 클래스이다.

Android.net.wifi.WifiManager 이며 소스에서는 클래스를 사용해 현재 WIFI 가 켜진

상태이면 끄고, 꺼진 상태이면 켜는 기능이 구현되어있다.

isWifiEnabled : WIFI 의 현재 상태에 대해서 알려준다

setWifiEnabled : WIFI 의 상태를 켜짐/커짐으로 변경해준다.

public void toggleWiFi(boolean status) {
        WifiManager wifiManager = 
                (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        if (status == true && !wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(true);
        } else if (status == false && wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(false);
        }
    }

API 에 대한 설명이 있는 URL 은 다음과 같다.

http://developer.android.com/reference/android/net/wifi/WifiManager.html


MainActivity 전체 소스 

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.Toast;

public class MainActivity extends Activity {

	@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Switch toggle = (Switch) findViewById(R.id.wifi_switch);
        toggle.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    toggleWiFi(true);
                    Toast.makeText(getApplicationContext(), R.string.wifi_start, Toast.LENGTH_LONG).show();
                } else {
                    toggleWiFi(false);
                    Toast.makeText(getApplicationContext(), R.string.wifi_end, Toast.LENGTH_LONG).show();
                }
            }
        });
	}
	
	public void toggleWiFi(boolean status) {
        WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        if (status == true && !wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(true);
        } else if (status == false && wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(false);
        }
    }

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

Activity_main.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
 
    <Switch
        android:id="@+id/wifi_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="110dp"
        android:background="@android:color/background_dark"
        android:checked="false"
        android:text="Wi-Fi Settings"
        android:textColor="@android:color/white"
        android:textOff="OFF"
        android:textOn="ON" />
 
</RelativeLayout>

실행된 화면이다. ON/OFF 를 마우스로 끌어서 변경하면 된다.




반응형
Posted by 녹두장군1
,