在Android移动开发中,尤其是遇到网络视频播放功能,因为视频播放需要较多的流量数据,因此我们在请求网络视频之前,需要判断当前的网络状态是无线WIFI还是移动网络。如果是WIFI,直接可以播放,如果是移动网络,我们需要给用户一个友好的提示。
一.网络状态判断,涉及到一个很关键的类ConnectivityManager,这是一个系统服务的类
ConnectivityManager connMgr = (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE);
二.通过ConnectivityManager的实例connMgr获取当前所有的网络。需要注意的是在API 21之前,通过connMgr只能获取到一个网络状态;API 21以上(包括21),通过connMgr获取到的网络状态数组
1.小于API 21
//无线WIFI网络
NetworkInfo WifiNetWorkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean Wificonnected = WifiNetWorkInfo.isConnected(); //判断是否连接WiFi
//移动网络
NetworkInfo MobilenetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean Mobileconnected = MobilenetworkInfo.isConnected(); //判断是否连接移动网络
2.等于大于API 21
Map netList =new HashMap<>();
Network[] allNetworks = connMgr.getAllNetworks();
for (int i =0; i < allNetworks.length; i++) {
NetworkInfo networkInfo = connMgr.getNetworkInfo(allNetworks[i]);
String typeName = networkInfo.getTypeName();
boolean connected = networkInfo.isConnected();
netList.put(typeName,connected);
}
if (netList.containsKey("WIFI")){
Boolean wifiIsConnet = netList.get("WIFI");
if (wifiIsConnet){
Toast.makeText(MainActivity.this,"WIFI连接,放心使用",Toast.LENGTH_SHORT).show();
}
}else if (netList.containsKey("MOBILE")){
Boolean mobileIsConnet = netList.get("MOBILE");
if (mobileIsConnet){
Toast.makeText(MainActivity.this,"移动网络连接,小心使用",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"移动网络未连接,不能使用",Toast.LENGTH_SHORT).show();
}
}