Android之Wifi模块开发
来源:互联网 发布:ios6.0.1不能软件更新 编辑:程序博客网 时间:2024/05/02 02:29
- 接口简介
- 开发实例
接口简介
因为项目需要,所以完成了一个简单的wifi模块,主要实现了打开wifi、获取网络列表、连接有密码或者无密码的网络等等,android为wifi操作提供了很多接口,在此简单总结一下所用的类和代码中使用的主要的方法(英语渣渣自己翻译的API,凑合看看吧)。
1、 ScanResult
主要用来描述已检测出来的接入点。
2、WifiInfo
连接的wifi信息描述。
3、WifiConfiguration
代表配置好的wifi,包括安全验证。
wifi有三种安全模式:无密码、WEP和WPA三种(简单了解可达链接 wifi三种安全模式),设置均不一样,具体在代码中createWifiInfo方法实现。
3、WifiManage
开发实例
下面提供一个功能较为完善的wifi开发例子:
下载地址为 http://download.csdn.net/detail/u010738604/9050129
演示效果:
我将判断以及连接wifi的各种方法操作均封装在了WifiAdmin类中,关键代码如下:
public class WifiAdmin { // 定义WifiManager对象 public WifiManager mWifiManager; // 定义WifiInfo对象 public WifiInfo mWifiInfo; // 扫描出的网络连接列表 public List<ScanResult> mWifiList; // 网络连接列表 public List<WifiConfiguration> mWifiConfiguration; // 定义一个WifiLock WifiLock mWifiLock; public WifiAdmin(Context context){ mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); System.out.println("mWifiManager="+mWifiManager); // 取得WifiInfo对象 mWifiInfo = mWifiManager.getConnectionInfo(); } public WifiConfiguration checkWiFiConfig(String str) { for (WifiConfiguration C : mWifiConfiguration) { if (C.SSID.equals("\"" +str+ "\"")) { return C; } } return null; } public void getWifiList() { // mWifiManager.; mWifiManager.startScan(); // 得到扫描结果 mWifiList = mWifiManager.getScanResults(); System.out.println("mWifiList="+mWifiList); // 得到配置好的网络连接 mWifiConfiguration = mWifiManager.getConfiguredNetworks(); } // 打开WIFI public void openWifi() { if (!mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(true); } } // 得到WifiInfo的所有信息包 public String getWifiInfo() { return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString(); } // 关闭WIFI public void closeWifi() { if (mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(false); } } // 指定配置好的网络进行连接 public void connectConfiguration(int index) { // 索引大于配置好的网络索引返回 if (index > mWifiConfiguration.size()) { return; } // 连接配置好的指定ID的网络 mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true); } // 检查当前WIFI状态 public int checkState() { return mWifiManager.getWifiState(); } public WifiConfiguration IsExsits(String SSID) { List<WifiConfiguration> existingConfigs = mWifiManager .getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; } //验证wifi密码,如果成功则返回一个配置好的WIFI信息 public WifiConfiguration createWifiInfo(String SSID, String Password, int Type) { //Log.v(TAG, "SSID = " + SSID + "## Password = " + Password + "## Type = " + Type); System.out.println("SSID = " + SSID + "## Password = " + Password + "## Type = " + Type); if (SSID == null || Password == null || SSID.equals("")) { //Log.e(TAG, "addNetwork() ## nullpointer error!"); System.out.println("addNetwork() ## nullpointer error!"); return null; } WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = isExsits(SSID, mWifiManager); 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; } /** * 判断wifi是否存在 * * @param SSID * @param wifiManager * @return */ public static WifiConfiguration isExsits(String SSID, WifiManager wifiManager) { List<WifiConfiguration> existingConfigs = wifiManager .getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; } public boolean ifConfigured(String ssid, WifiManager mWifiManager2) { // TODO Auto-generated method stub if(isExsits(ssid, mWifiManager2) != null) return true; return false; }}
1 0
- Android之Wifi模块开发
- Android WiFi模块功能开发
- android之wifi开发
- android之wifi开发
- android之wifi开发
- android之wifi开发
- Android开发之wifi
- android之wifi开发
- android之wifi开发
- Android开发之Wifi
- Android之Wifi开发
- android开发中wifi模块移植
- Android中的WIFI模块开发思路
- Android-WiFi开发之 WiFi广播监听
- Android开发之WIFI操作
- Android Wifi开发之WifiConfiguration
- Android开发之WIFI操作
- android开发教程之wifi开发
- 白话空间统计之五:空间关系的概念化(上)
- c#外部调用类里边的函数
- jquery ajax验证注册
- LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
- 病毒HEUR:Trojan-Downloader.Win32.Generic
- Android之Wifi模块开发
- js跳转页面方法
- redis的一些坑
- HDU 4360 As long as Binbin loves Sangsang(SPFA)
- 在Mac osx使用ADT Bundle踩过的坑
- CPU占用率高的九种可能
- UVA 10115 子符串替换
- thinkphp自动填充
- UINavigationController(导航视图控制器)的基本设置