在运行之前调用该函数进行申请即可
牛刀小试WiFi状态分类
- 网卡正在关闭 WIFI_STATE_DISABLING WIFI ( 状态码:0 )
- 网卡不可用 WIFI_STATE_DISABLED WIFI ( 状态码:1 )
- 网卡正在打开 WIFI_STATE_ENABLING WIFI ( 状态码:2 )
- 网卡可用 WIFI_STATE_ENABLED WIFI ( 状态码:3 )
- 网卡状态不可知 WIFI_STATE_UNKNOWN WIFI ( 状态码:4 )
// 获取 WIFI 的状态.public static int getWifiState(WifiManager manager) {return manager == null ? WifiManager.WIFI_STATE_UNKNOWN : manager.getWifiState();}
获取WiFiManager实例// 获取 WifiManager 实例.public static WifiManager getWifiManager(Context context) {return context == null ? null : (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);}
开启、关闭WIFI// 开启/关闭 WIFI.public static boolean setWifiEnabled(WifiManager manager, boolean enabled) {return manager != null && manager.setWifiEnabled(enabled);}
扫描周围的WiFi// 开始扫描 WIFI.public static void startScanWifi(WifiManager manager) {if (manager != null) {manager.startScan();}}
获取扫描结果// 获取扫描 WIFI 的热点:public static List<ScanResult> getScanResult(WifiManager manager) {return manager == null ? null : manager.getScanResult();}
获取历史WiFi配置信息// 获取已经保存过的/配置好的 WIFI 热点.public static List<WifiConfiguration> getConfiguredNetworks(WifiManager manager) {return manager == null ? null : manager.WifiConfiguration();}
获取对应scanResult的配置信息List<WifiConfiguration> configs = wifiManager.getMatchingWifiConfig(scanResult);// 可以打印一下看具体的情况:if (configs == null || configs.isEmpty()) return;for (WifiConfiguration config : configs) {Log.v(TAG, "config = " + config);}
获取WIFI MAC地址public String getWifiBSSID() {return mWifiInfo.getBSSID();}
获取本机MAC地址Android M版本之后 , 通过wifiInfo.getMacAddress()
获取的MAC地址是一个固定的假地址 , 值为02:00:00:00:00:00
, 在这里通过getMacAddress
函数获取真实MAC【Android掌控WiFi不完全指南】
// 获取本机MAC地址// Android M版本之后 , 通过wifiInfo.getMacAddress()获取的MAC地址是一个固定的假地址 , 值为02:00:00:00:00:00public String getSelfMac(){String mac=mWifiInfo==null?"null":mWifiInfo.getMacAddress();if(TextUtils.equals(mac, "02:00:00:00:00:00")) {String temp = getMacAddress();if (!TextUtils.isEmpty(temp)) {mac = temp;}}return mac;}private static String getMacAddress(){String macAddress = "";try {Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) {NetworkInterface iF = interfaces.nextElement();byte[] addr = iF.getHardwareAddress();if (addr == null || addr.length == 0) {continue;}StringBuilder buf = new StringBuilder();for (byte b : addr) {buf.append(String.format("%02X:", b));}if (buf.length() > 0) {buf.deleteCharAt(buf.length() - 1);}String mac = buf.toString();//WifiMonitorLogger.i("mac", "interfaceName="+iF.getName()+", mac="+mac);if(TextUtils.equals(iF.getName(), "wlan0")){return mac;}}} catch (SocketException e) {e.printStackTrace();return macAddress;}return macAddress;}
获取WIFI的网络速度和速度单位// 获取当前连接wifi的速度public int getConnWifiSpeed(){return mWifiInfo.getLinkSpeed();}// 获取当前连接wifi的速度单位public String getConnWifiSpeedUnit(){return WifiInfo.LINK_SPEED_UNITS;}
获取当前连接WIFI的信号强度// 获取当前连接wifi的信号强度public int getConnWifiLevel(){return mWifiManager.calculateSignalLevel(mWifiInfo.getRssi(),5);}
获取当前连接的WIFI的加密方式本来我以为wifiinfo里面应该会有解决方案 , 但是搜索了一下之后发现 如何在不扫描所有wifi网络的情况下获取当前wifi连接的加密类型?看来还是需要遍历scanresults , 但是很显然SSID容易重复 , 所以用WIFI BSSID来唯一确定
经验总结扩展阅读
- 随身wifi怎么用的要自己买卡么(随身wifi靠谱吗)
- 随身WiFi是什么意思,怎么用的(随身wifi有什么意义)
- 随身WiFi怎么用(随身wifi怎么交费)
- 随身WiFI是怎么用的(随身wifi激活的步骤)
- 移动随身wifi怎么用(移动wifi多少钱一个月)
- 随身无线网怎么用(随身wifi是不是智商税)
- android安卓手机:[4]如何怎么打开.apk文件
- 29 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-终篇
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
- Android自动化测试工具调研