Android开发笔记--WIFI状态判断

来源:互联网 发布:大疆一键全景软件下载 编辑:程序博客网 时间:2024/04/30 15:22

最近公司开发中遇到了一个需求:公司有个业务需要——使用高德地图SDK,为了提高定位精度需要让用户WIFI处于打开状态(因为打开WIFI 扫描周围的热点SDK会去匹配他们的数据库里记录的WIFI热点的位置,从而提高定位精度),注意:这里的打开不是处于连接状态,而是处于连接状态或者连接中,或者未连接但是wifi开着,总之就是保证wifi是可用的状态,一开始我误认为是 通过WIFI 状态来判断,我们先来看看如下代码:
代码1:

    public static boolean isWifiConnected(Context context) {        ConnectivityManager connectivity = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        if (connectivity == null) {        } else {            NetworkInfo[] info = connectivity.getAllNetworkInfo();            if (info != null) {                for (int i = 0; i < info.length; i++) {                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {                        return true;                    }                }            }        }        return false;    }

此方法在wifi 未连接的时候也返回了 false,显然不是我们需要的,因为此方法只判断wifi是否已经处于连接的状态,而不是打开的状态,所以我们需要通过判断WIFI是否可用来实现我们的业务需求,下面来看方法2:
方法2:

public static boolean isWifiAviliable(Context context) {        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);    return wifiManager.isWifiEnabled();    }

当然,在方法调用之前需要在配置文件中加入权限

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

此方法就是用于判断wifi是否可用,就可以用于判断wifi是否出于打开状态,满足了地图SDK的业务需求。当然上述方法很简单,在这里主要就是做个笔记,好记性不如烂笔头,哈哈~

结论:如果判断WIFI是否处于连接状态,则使用方法1,如果需要判断WIFI是否可用,即使WIFI状态是连接状态,或是打开未连接等等,就使用方法2。

0 0