android wifi処理

3778 ワード

androidアプリケーションではwifiを便利に使用して異なるアプリケーションのニーズを処理することができ、柔軟で方面の方法は開発者に提供され、ここではよく使われるwifi処理関数を定義し、androidアプリケーション開発を参照して第8章の内容を解読する.
public class WifiAdmin {
	private String tag = "WifiAdmin";
	private WifiManager wifiManager;
	private WifiInfo wifiInfo;
	private List<ScanResult> wifiList;
	private List<WifiConfiguration> wifiConfiguration;
	WifiLock wifiLock;

	public WifiAdmin(Context context) {
		wifiManager = (WifiManager) context
				.getSystemService(Context.WIFI_SERVICE);
		wifiInfo = wifiManager.getConnectionInfo();
	}
	
	//  wifi ssid
	public void connected(){
		for(WifiConfiguration config:getConfiguration()){
			String ssid = config.SSID.replace("\"", "");
			if(config.status!=1){
				Log.i(tag, "ssid--------->"+ssid);
				if(ssid.startsWith("OPLK")){
					this.connectConfiguration(config.networkId);
					while (getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
						try {
							Thread.currentThread();
							Thread.sleep(100);
						} catch (InterruptedException ie) {
						}
					}
					break;
				}
			}
		}
	}
	public int getWifiState(){
		return wifiManager.getWifiState();
	}

	//  wifi
	public void openWifi() {
		if (!wifiManager.isWifiEnabled()) {
			wifiManager.setWifiEnabled(true);
		}
	}

	//  wifi
	public void closeWifi() {
		if (!wifiManager.isWifiEnabled()) {
			wifiManager.setWifiEnabled(false);
		}
	}

	//      wifi
	public void acquireWifiLock() {
		wifiLock.acquire();
	}

	//  wifi
	public void releaseWifiLock() {
		if (wifiLock.isHeld()) {
			wifiLock.acquire();
		}
	}

	public void creatWifiLock() {
		wifiLock = wifiManager.createWifiLock("Test");
	}

	public List<WifiConfiguration> getConfiguration() {
		return wifiConfiguration;
	}

	public void connectConfiguration(int networkId) {
		boolean isConn = wifiManager.enableNetwork(networkId, true);
		Log.i(tag, "isConn----->"+isConn);
	}

	public void startScan() {
		wifiManager.startScan();
		wifiList = wifiManager.getScanResults();
		wifiConfiguration = wifiManager.getConfiguredNetworks();
		Log.i(tag, "start scan wifi list size------>"+wifiList.size());
	}

	public List<ScanResult> getWifiList() {
		return wifiList;
	}

	public void LookUpScan() {
		for (ScanResult result:wifiList) {
			Log.i(tag, "wifi ssid---->"+result.SSID);
		}
	}

	public String GetMacAddress() {
		return (wifiInfo == null) ? "NULL" : wifiInfo.getMacAddress();
	}

	public String GetBSSID() {
		return (wifiInfo == null) ? "NULL" : wifiInfo.getBSSID();
	}

	public int GetIPAddress() {
		return (wifiInfo == null) ? 0 : wifiInfo.getIpAddress();
	}

	public int GetNetworkId() {
		return (wifiInfo == null) ? 0 : wifiInfo.getNetworkId();
	}

	public String GetWifiInfo() {
		return (wifiInfo == null) ? "NULL" : wifiInfo.toString();
	}

	public void AddNetwork(WifiConfiguration wcg) {
		int wcgID = wifiManager.addNetwork(wcg);
		wifiManager.enableNetwork(wcgID, true);
	}

	public void DisconnectWifi(int netId) {
		wifiManager.disableNetwork(netId);
		wifiManager.disconnect();
	}
}