ANDROID---WIFI插件
来源:互联网 发布:日本兵战斗力知乎 编辑:程序博客网 时间:2024/05/22 12:47
实现功能:实现对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{//定义三个actionpublic final static String OPEN_ACTION = "openWifi";public final static String CLOSE_ACTION = "closeWifi";public final static String CHECK_ACTION = "checkWifi";@Overridepublic 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'); } }]
- ANDROID---WIFI插件
- Android studio 插件 ADB WIFI
- ADB WIFI (Android Studio 插件)
- Android Studio插件之_ADB WIFI
- Android Studio 使用wifi调试插件
- Android Studio 插件ADB WIFI 的添加
- Android Studio插件ADB WIFI(让调试飞起)
- Android Studio超实用插件--ADB WIFI 使用的介绍
- 极力推荐!!! Android Studio 中ADB WIFI 插件
- 推荐:Android studio无线调试插件ADB WIFI
- Android Studio中 ADB WIFI插件进行无线调试实践
- Android Studio中 ADB WIFI插件进行无线调试实践
- Android wifi
- Android WIFI
- Android Wifi
- Android WIFI
- Android wifi
- android wifi
- 10.IDA-基本操作
- MySQL设置唯一键
- DedeEIMS如何实现中英文调用不同排版主页/栏目页面
- Eclipse中将Java项目 打包为jar,并且引入第三方jar包 解决办法
- 慎用USES_CONVERSION
- ANDROID---WIFI插件
- WINDBG调试内核以及驱动的基本步骤和要点(包括双机调试,虚拟机调试,virtualbox加速调试)
- armeabi和armeabi-v7a
- 6 个基于 jQuery 的表单向导插件推荐
- WEB通用测试用例
- Linux 系统管理命令
- 嵌入式linux inittab解读
- @property 详解
- 基于Ubuntu 11.10/12.04编译OpenCV 2.3.x和2.4.x(适用于Fedora和红帽子rhel 6.2)