我們知道,Android手機(jī)的網(wǎng)絡(luò)連接方式一般有兩種:Wifi連接 和 運(yùn)營(yíng)商數(shù)據(jù)連接;
同時(shí)一樣缚态,Android機(jī)頂盒中網(wǎng)絡(luò)連接方式也有兩種:wifi連接 和 有線連接磁椒;
無論是作手機(jī)app還是機(jī)頂盒APP,我們?cè)陂_發(fā)過程中都會(huì)經(jīng)常用到需要判斷當(dāng)前的網(wǎng)絡(luò)連接方式玫芦,從而給用戶不同的選擇或者造成不同的播放場(chǎng)景浆熔;
下面我們就分別看一下手機(jī)和機(jī)頂盒獲取當(dāng)前網(wǎng)絡(luò)連通方式的方法;
首先桥帆,Android系統(tǒng)有一個(gè)ConnectivityManager類医增,在網(wǎng)絡(luò)連通后天通,他會(huì)創(chuàng)建一個(gè)NetworkInfo類又官,將當(dāng)前網(wǎng)絡(luò)連接的信息都存儲(chǔ)到這個(gè)類中;無論是手機(jī)還是機(jī)頂盒绷耍,我們都通過ConnectivityManager獲取當(dāng)前的NetworkInfo類祈匙,從而判斷網(wǎng)絡(luò)是否暢通邓萨,網(wǎng)絡(luò)的信息等內(nèi)容;
一 需要權(quán)限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
二 Android手機(jī)菊卷,判斷是wifi連接 還是 數(shù)據(jù)連接:
ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager mTelephony = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
//檢查網(wǎng)絡(luò)是否連接
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 網(wǎng)絡(luò)
return info.isConnected();
} else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS && !mTelephony.isNetworkRoaming()) { //MOBILE 數(shù)據(jù)連接
return info.isConnected();
} else {
return false;
}
三 Android 機(jī)頂盒缔恳,判斷是wifi連接還是有線連接
/**
* 判斷當(dāng)前網(wǎng)絡(luò)有沒有聯(lián)網(wǎng)
* 并且判斷是有線還是無線
*
* 0:無網(wǎng)絡(luò)連接
* 1:有線網(wǎng)絡(luò)
* 2:無線網(wǎng)絡(luò)
*
* @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, "網(wǎng)絡(luò)連接 =" + 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;
}
}