WIFI

.     首先了解wifi有哪几种状态

WIFI_STATE_DISABLING(0):正在关闭

WIFI_STATE_DISABLED(1):已经关闭

WIFI_STATE_ENABLING(2):正在打开

WIFI_STATE_ENABLED(3):已经打开

WIFI_STATE_UNKNOWN(4):未知状态

 

 

2. 创建插件WiFiPlugin

  1. package com.em.wifiplugin;  
  2.   
  3. import org.json.JSONArray;  
  4. import org.json.JSONException;  
  5. import org.json.JSONObject;  
  6. import android.content.Context;  
  7. import android.net.wifi.WifiManager;  
  8. import android.util.Log;  
  9. import com.phonegap.api.Plugin;  
  10. import com.phonegap.api.PluginResult;  
  11. import com.phonegap.api.PluginResult.Status;  
  12.   
  13. /** 
  14.  * 实现 管理wifi的功能 
  15.  * 暂时实现的action功能有:打开、关闭以及查看 
  16.  * @author yeliping 
  17.  * 
  18.  */  
  19. public class WiFiPlugin extends Plugin{  
  20.   
  21.     //定义三个action  
  22.     public final static String OPEN_ACTION = "openWifi";  
  23.     public final static String CLOSE_ACTION = "closeWifi";  
  24.     public final static String CHECK_ACTION = "checkWifi";  
  25.       
  26.     @Override  
  27.     public PluginResult execute(String action, JSONArray data,   
  28.             String callbackId) {  
  29.         PluginResult pluginResult = null;  
  30.           
  31.         if(OPEN_ACTION.equals(action) || CLOSE_ACTION.equals(action)   
  32.                 || CHECK_ACTION.equals(action)){  
  33.             //业务处理  
  34.             WifiManager wifiManager = null;  
  35.             if(OPEN_ACTION.equals(action)){  
  36.                 //wifiManager实时获取,以保证数据同步  
  37.                 wifiManager = (WifiManager)this.ctx  
  38.                         .getSystemService(Context.WIFI_SERVICE);  
  39.                 wifiManager.setWifiEnabled(true);  
  40.             }else if(CLOSE_ACTION.equals(action)){  
  41.                 wifiManager = (WifiManager)this.ctx  
  42.                         .getSystemService(Context.WIFI_SERVICE);  
  43.                 wifiManager.setWifiEnabled(false);  
  44.             }else if(CHECK_ACTION.equals(action)){  
  45.                 wifiManager = (WifiManager)this.ctx  
  46.                         .getSystemService(Context.WIFI_SERVICE);  
  47.             }  
  48.               
  49.             JSONObject jsonObject = new JSONObject();  
  50.             try {  
  51.                 jsonObject.put("state", wifiManager.getWifiState());  
  52.                 jsonObject.put("enable", wifiManager.isWifiEnabled());  
  53.                   
  54.                 pluginResult = new PluginResult(Status.OK, jsonObject);  
  55.             } catch (JSONException e) {  
  56.                 e.printStackTrace();  
  57.                 pluginResult = new PluginResult(Status.JSON_EXCEPTION);  
  58.             }  
  59.         }else{//无效的action操作  
  60.             pluginResult = new PluginResult(Status.INVALID_ACTION);  
  61.             Log.d("WiFiPlugin""invalid action:"+action);  
  62.         }  
  63.           
  64.         return pluginResult;  
  65.     }  
  66.      
  67. }  
package com.em.wifiplugin;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.util.Log;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import com.phonegap.api.PluginResult.Status;

/**
 * 实现 管理wifi的功能
 * 暂时实现的action功能有:打开、关闭以及查看
 * @author yeliping
 *
 */
public class WiFiPlugin extends Plugin{

	//定义三个action
	public final static String OPEN_ACTION = "openWifi";
	public final static String CLOSE_ACTION = "closeWifi";
	public final static String CHECK_ACTION = "checkWifi";
	
	@Override
	public PluginResult execute(String action, JSONArray data, 
			String callbackId) {
		PluginResult pluginResult = null;
		
		if(OPEN_ACTION.equals(action) || CLOSE_ACTION.equals(action) 
				|| CHECK_ACTION.equals(action)){
			//业务处理
			WifiManager wifiManager = null;
			if(OPEN_ACTION.equals(action)){
				//wifiManager实时获取,以保证数据同步
				wifiManager = (WifiManager)this.ctx
						.getSystemService(Context.WIFI_SERVICE);
				wifiManager.setWifiEnabled(true);
			}else if(CLOSE_ACTION.equals(action)){
				wifiManager = (WifiManager)this.ctx
						.getSystemService(Context.WIFI_SERVICE);
				wifiManager.setWifiEnabled(false);
			}else if(CHECK_ACTION.equals(action)){
				wifiManager = (WifiManager)this.ctx
						.getSystemService(Context.WIFI_SERVICE);
			}
			
			JSONObject jsonObject = new JSONObject();
			try {
				jsonObject.put("state", wifiManager.getWifiState());
				jsonObject.put("enable", wifiManager.isWifiEnabled());
				
				pluginResult = new PluginResult(Status.OK, jsonObject);
			} catch (JSONException e) {
				e.printStackTrace();
				pluginResult = new PluginResult(Status.JSON_EXCEPTION);
			}
		}else{//无效的action操作
			pluginResult = new PluginResult(Status.INVALID_ACTION);
			Log.d("WiFiPlugin", "invalid action:"+action);
		}
		
		return pluginResult;
	}
   
}

在插件中定义了三个action,分别对应此插件要实现的三个功能open、close、check;

使用this.ctx.getSystemService(Context.WIFI_SERVICE);方法获取到wifi管理对象WifiManager,对wifi的任何操作都是由它进行。匹对action后,通过wifiManager.setWifiEnabled(true/false)来打开、关闭wifi。此时,需要注意的是,WifiManager这个对象必须在操作前实时获取以保证数据的同步,否则在运行中会抛异常。

Execute方法返回一个PluginResult对象:

在应用程序调用的action在插件中没有与之匹配的

---ànew PluginResult(Status.INVALID_ACTION);

在业务操作异常

---ànew PluginResult(Status.JSON_EXCEPTION);

操作成功

---ànewPluginResult(

Status.OK, jsonObject) ,jsonObject是返回到应用程序的数据;

3.   新建WifiApp phonegap应用

将WiFiPlugin插件打包为wifiManagement.jar并build path;

在res/xml/plugins.xml定义

 

  1. <plugin name="WifiPlugin" value="com.em.wifiplugin.WiFiPlugin"></plugin>  
<plugin name="WifiPlugin" value="com.em.wifiplugin.WiFiPlugin"></plugin>

4.   新建wifimanagement.js,定义插件类,指明调用的action

 

 

  1. /** 
  2.  * 定义插件类,指明调用的action 
  3.  * 
  4.  */  
  5.     var myWifi = {  
  6.             wifiApp : function(action,params,successCallback,failureCallback){  
  7.                 var str =  action+'Wifi';  
  8.                 //调用phonegap.exec方法  
  9.                 return PhoneGap.exec(  
  10.                     successCallback,  
  11.                     failureCallback,  
  12.                     'WifiPlugin',  
  13.                     str,  
  14.                     [params]  
  15.                 );  
  16.             }  
  17.     };  
/**
 * 定义插件类,指明调用的action
 *
 */
	var myWifi = {
			wifiApp : function(action,params,successCallback,failureCallback){
				var str =  action+'Wifi';
				//调用phonegap.exec方法
				return PhoneGap.exec(
					successCallback,
					failureCallback,
					'WifiPlugin',
					str,
					[params]
				);
			}
	};

 

5.     新建app.js,调用插件类

  1. function wifiMana(action){  
  2.      myWifi.wifiApp(  
  3.         action,  
  4.         null,  
  5.         function(r){printResult(r);},  
  6.         function(e){alert(e);log(e);}  
  7.     );   
  8. }   
  9. //打印结果  
  10. function printResult(fileInfo){      
  11.     var wifistate = fileInfo.state;  
  12.     var str = "";  
  13.     if(wifistate == 0){  
  14.         str = "WIFI正在关闭...";  
  15.     }else if(wifistate == 1){  
  16.         str = "WIFI已经关闭";  
  17.     }else if(wifistate == 2){  
  18.         str = "WIFI正在开启...";  
  19.     }else if(wifistate == 3){  
  20.         str = "WIFI已经开启";  
  21.     }else if(wifistate == 4){  
  22.         str = "WIFI处于未知状态...";  
  23.     }  
  24.     Ext.Msg.alert('',str);  
  25. }     
function wifiMana(action){
	 myWifi.wifiApp(
		action,
		null,
		function(r){printResult(r);},
		function(e){alert(e);log(e);}
	); 
} 
//打印结果
function printResult(fileInfo){    
	var wifistate = fileInfo.state;
	var str = "";
	if(wifistate == 0){
		str = "WIFI正在关闭...";
	}else if(wifistate == 1){
		str = "WIFI已经关闭";
	}else if(wifistate == 2){
		str = "WIFI正在开启...";
	}else if(wifistate == 3){
		str = "WIFI已经开启";
	}else if(wifistate == 4){
		str = "WIFI处于未知状态...";
	}
	Ext.Msg.alert('',str);
}   

6.     按钮注册点击事件

  1. items: [  
  2.                                 {  
  3.                                     xtype:'button',  
  4.                                     text:'startWifi',  
  5.                                     handler: function(){  
  6.                                          wifiMana('open');  
  7.                                     }  
  8.                                  },  
  9.                                  {  
  10.                                  xtype:'button',  
  11.                                     text:'closeWifi',  
  12.                                     handler: function(){  
  13.                                           wifiMana('close');  
  14.                                     }  
  15.                                   },  
  16.                                   {                             
  17.                                     xtype:'button',  
  18.                                     text:'checkWifi',  
  19.                                     handler: function(){  
  20.                                          wifiMana('check');  
  21.                                     }  
  22.                                   }]  
items: [
						        {
			                    	xtype:'button',
			                    	text:'startWifi',
			                    	handler: function(){
			                             wifiMana('open');
			                    	}
			                     },
			                     {
			                     xtype:'button',
			                     	text:'closeWifi',
			                     	handler: function(){
			                              wifiMana('close');
			                     	}
			                      },
			                      {		                      
			                    	xtype:'button',
			                       	text:'checkWifi',
			                       	handler: function(){
			                             wifiMana('check');
			                       	}
			                      }]
posted @ 2013-12-25 14:20  ybc爱编程  阅读(366)  评论(0)    收藏  举报