안드로이드(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 를 마우스로 끌어서 변경하면 된다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(android) FrameLayout 을 이용해서 이미지 뷰 전환하기 (0) | 2013.10.06 |
---|---|
안드로이드(android) 상대레이아웃(RelativeLayout) 속성값 알아보기 (0) | 2013.10.05 |
안드로이드(Android) 에서 layout_gravity 와 gravity 속성차이 알아보기 (0) | 2013.10.03 |
안드로이드(Android) 에서 프레임 애니메이션 만들기 (5) | 2013.09.30 |
안드로이드(Android) 개발시 invalid project description 에러 발생 (2) | 2013.09.23 |
안드로이드(Android) 버전업이 되면서 요구 버전 오류 해결 (0) | 2013.09.23 |
안드로이드(Android) sdcard 에 파일이 안들어 갈 때 (0) | 2013.09.16 |
안드로이드(Android) Android Studio 새로운 버전으로 업데이트 하고자 할 때 (0) | 2013.09.14 |