ANDROID---WIFI插件

实现功能:实现对WIFI的简单管理,如打开、关闭以及查看WIFI的状态。

 

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

WIFI_STATE_DISABLING(0):正在关闭

WIFI_STATE_DISABLED(1):已经关闭

WIFI_STATE_ENABLING(2):正在打开

WIFI_STATE_ENABLED(3):已经打开

WIFI_STATE_UNKNOWN(4):未知状态


2. 创建插件WiFiPlugin

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定义

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

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

/**
 * 定义插件类,指明调用的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,调用插件类

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.     按钮注册点击事件

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');
			                       	}
			                      }]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值