Android之Wifi开发---简单工具类
来源:互联网 发布:wince系统安装软件 编辑:程序博客网 时间:2024/06/15 01:52
今年真是人生中最不顺利的一年。年后上班一周后,公司突然破产,几个月工资没拿到。因为公司做有互联网理财,出于相信公司的考虑,也投入了一点钱进去,现在钱也拿不到了。损失惨重,消沉了几天,日子还得继续,又开始过苦日子吧!所以也买了些书来学习下相关知识。物联网,我个人理解就是手机APP与各种硬件设备通过各种可以通信的方式(比如WIFI,Bluetooth等)来实现我们希望的功能。 用到wifi就肯定要对wifi进行各种操作,所以写了个简单的工具类,方便以后在工作中使用。
/** *wifi基本操作工具类 */public class WifiTool { // 上下文Context对象 private Context mContext; // WifiManager对象 private WifiManager mWifiManager; public WifiTool(Context mContext) { this.mContext = mContext; mWifiManager = (WifiManager) mContext .getSystemService(Context.WIFI_SERVICE); } /** * 判断手机是否连接在Wifi上 */ public boolean isConnectWifi() { // 获取ConnectivityManager对象 ConnectivityManager conMgr = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); // 获取NetworkInfo对象 NetworkInfo info = conMgr.getActiveNetworkInfo(); // 获取连接的方式为wifi State wifi = conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI) .getState(); if (info != null && info.isAvailable() && wifi == State.CONNECTED) { return true; } else { return false; } } /** * 获取当前手机所连接的wifi信息 */ public WifiInfo getCurrentWifiInfo() { return mWifiManager.getConnectionInfo(); } /** * 添加一个网络并连接 * 传入参数:WIFI发生配置类WifiConfiguration */ public boolean addNetwork(WifiConfiguration wcg) { int wcgID = mWifiManager.addNetwork(wcg); return mWifiManager.enableNetwork(wcgID, true); } /** * 搜索附近的热点信息,并返回所有热点为信息的SSID集合数据 */ public List<String> getScanSSIDsResult() { // 扫描的热点数据 List<ScanResult> resultList; // 开始扫描热点 mWifiManager.startScan(); resultList = mWifiManager.getScanResults(); ArrayList<String> ssids = new ArrayList<String>(); if (resultList != null) { for (ScanResult scan : resultList) { ssids.add(scan.SSID);// 遍历数据,取得ssid数据集 } } return ssids; } /** * 得到手机搜索到的ssid集合,从中判断出设备的ssid(dssid) */ public List<String> accordSsid() { List<String> s = getScanSSIDsResult(); List<String> result = new ArrayList<String>(); for (String str : s) { if (checkDssid(str)) { result.add(str); } } return result; } /** * 检测指定ssid是不是匹配的ssid,目前支持GBELL,TOP,后续可添加。 * * @param ssid * @return */ private boolean checkDssid(String ssid,String condition) { if (!TextUtils.isEmpty(ssid)&&!TextUtils.isEmpty(condition)) { //这里条件根据自己的需求来判断,我这里就是随便写的一个条件 if (ssid.length() > 8 && (ssid.substring(0, 8).equals(condition))) { return true; } else { return false; } } else { return false; } } /** * 连接wifi * 参数:wifi的ssid及wifi的密码 */ public boolean connectWifiTest(final String ssid, final String pwd) { boolean isSuccess = false; boolean flag = false; mWifiManager.disconnect(); boolean addSucess = addNetwork(CreateWifiInfo(ssid, pwd, 3)); if (addSucess) { while (!flag && !isSuccess) { try { Thread.sleep(10000); } catch (InterruptedException e1) { e1.printStackTrace(); } String currSSID = getCurrentWifiInfo().getSSID(); if (currSSID != null) currSSID = currSSID.replace("\"", ""); int currIp = getCurrentWifiInfo().getIpAddress(); if (currSSID != null && currSSID.equals(ssid) && currIp != 0) { //这里还需要做优化处理,增强结果判断 isSuccess = true; } else { flag = true; } } } return isSuccess; } /** * 创建WifiConfiguration对象 * 分为三种情况:1没有密码;2用wep加密;3用wpa加密 * @param SSID * @param Password * @param Type * @return */ public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) { mWifiManager.removeNetwork(tempConfig.networkId); } if (Type == 1) // WIFICIPHER_NOPASS { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 2) // WIFICIPHER_WEP { config.hiddenSSID = true; config.wepKeys[0] = "\"" + Password + "\""; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers .set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 3) // WIFICIPHER_WPA { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; } private WifiConfiguration IsExsits(String SSID) { List<WifiConfiguration> existingConfigs = mWifiManager .getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; }}
2 0
- Android之Wifi开发---简单工具类
- Android WIFI连接开发 WIFI工具类
- Android开发--wifi工具类资料
- android之wifi开发
- android之wifi开发
- android之wifi开发
- android之wifi开发
- Android开发之wifi
- android之wifi开发
- android之wifi开发
- Android开发之Wifi
- Android之Wifi开发
- android开发工具类之获得WIFI IP地址或者手机网络IP
- Android WIFI工具类
- android开发之 Wifi的四个类
- Android-WiFi开发之 WiFi广播监听
- Android开发之WIFI操作
- Android Wifi开发之WifiConfiguration
- 快速排序
- java中的类型转换
- SmartClient中jsp使用xml方式的调用过程
- python之os.path模块
- struts2 form提交表单自动封装对象,后台取值为null的几个原因
- Android之Wifi开发---简单工具类
- P2P网络中DHT算法分析
- 【红宝书笔记】cookie,[session|global|local]Storae的异同
- Linux 命令
- 深入理解js闭包
- ASP.NET 文件的下载
- Windows平台分布式架构实践 - 负载均衡
- "WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
- cocos2d-js的自定义事件的两种创建方法