我们知道,Android手机的网络连接方式一般有两种:Wifi连接 和 运营商数据连接;
同时一样,Android机顶盒中网络连接方式也有两种:wifi连接 和 有线连接;
无论是作手机app还是机顶盒APP,我们在开发过程中都会经常用到需要判断当前的网络连接方式,从而给用户不同的选择或者造成不同的播放场景;
下面我们就分别看一下手机和机顶盒获取当前网络连通方式的方法;
首先,Android系统有一个ConnectivityManager类,在网络连通后,他会创建一个NetworkInfo类,将当前网络连接的信息都存储到这个类中;无论是手机还是机顶盒,我们都通过ConnectivityManager获取当前的NetworkInfo类,从而判断网络是否畅通,网络的信息等内容;
一 需要权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
二 Android手机,判断是wifi连接 还是 数据连接:
ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager mTelephony = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
//检查网络是否连接
NetworkInfo info = mConnectivity.getActiveNetworkInfo();
if (info == null || !mConnectivity.getBackgroundDataSetting()) {
return false;
}
int netType = info.getType();
int netSubtype = info.getSubtype();
if (netType == ConnectivityManager.TYPE_WIFI) { //WIFI 网络
return info.isConnected();
} else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS && !mTelephony.isNetworkRoaming()) { //MOBILE 数据连接
return info.isConnected();
} else {
return false;
}
三 Android 机顶盒,判断是wifi连接还是有线连接
/**
* 判断当前网络有没有联网
* 并且判断是有线还是无线
*
* 0:无网络连接
* 1:有线网络
* 2:无线网络
*
* @return
*/
private int getNetMode() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info == null) {
return 0;
}
boolean iscon = info.isAvailable();
Log.e(TAG, "网络连接 =" + iscon + ",连接方式:" + info.getType() + " ," + info.getTypeName());
if (!iscon) {
return 0;
}
if (info.getType() == ConnectivityManager.TYPE_ETHERNET) {
return 1;
} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
return 2;
} else {
return 0;
}
}