1. 程式人生 > >Android控制wifi開關

Android控制wifi開關

認識下Wifi的幾種狀態:

1. wifiManager.WIFI_STATE_DISABLED ;  (1)  關閉

  2. wifiManager..WIFI_STATE_ENABLED ;  (3) 開啟

  3. wifiManager..WIFI_STATE_DISABLING ;(0) 關閉中

  4 wifiManager..WIFI_STATE_ENABLING  ;  (2) 開啟中

知道這幾種狀態後就可以只用它了

首先在manifest中新增許可權:

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

這很重要!!!

接下來宣告wifiManager,並獲取物件。

(本程式碼在Activity中編寫,若不在Activity中,需要在getSystemService方法前新增context.)

private WifiManager wifiManager=null; 
* 獲取WIFI服務 
	*/  
	wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);



得到物件後直接使用就可以了,它的使用很簡單:
//關閉wifi
	wifiManager.setWifiEnabled(false);
	//開啟wifi
	wifiManager.setWifiEnabled(true);



注意:wifi並不能馬上關閉或者開啟,這個過程是需要一段時間的。因此如果需要在wifi開啟後執行某個操作需要等待這個開啟的過程

下面就是一個例子:等待Wifi開啟後執行一些方法

/**
	 * wifi開啟後執行某個操作
	 */
	private void onWifiOpenDoing(){
		while(!isWifiOpened()){
			try{
				//為了避免程式一直while迴圈,讓它睡個100毫秒在檢測……
				Thread.currentThread();
				Thread.sleep(100);
			}
			catch(InterruptedException ie){
			}
		}
		//在wifi開啟後執行的操作都寫在這下面
		Log.i("log", "wifi已經開啟");
	}
/**
	 * 判斷wifi是否已經開啟
	 * @return	true:已開啟、false:未開啟
	 */
	public boolean isWifiOpened(){
		int status=wifiManager.getWifiState();  
		if (status == WifiManager.WIFI_STATE_ENABLED ) {
			//wifi已經開啟
			return true;
		}else {
			return false;
		}
	}


這裡只是簡單描述了Wifi的開啟和關閉的方法,程式碼粗糙請勿見怪...

文章若有誤,請多指教