如果我通过Wi-Fi启动应用程序并切换到3G,则打印 0,15 ,因此它是移动网络,但我不知道为什么该子类型意味着。然后我切换回Wi-Fi并打印 0,3 一秒钟(移动网络,NETWORK_TYPE_UMTS)并显示我已连接到我的UI上的移动网络,最终连接到Wi -Fi并打印 1,0 。那么15意味着什么?文档没有说明这些价值观是什么。
if (networkInfo != null && networkInfo.isConnected()) {
int netType = networkInfo.getType();
int netSubtype = networkInfo.getSubtype();
Log.d("Receiver", String.valueOf(netType));
Log.d("Receiver", String.valueOf(netSubtype));
if (netType == ConnectivityManager.TYPE_WIFI) {
Log.i("Receiver", "WiFi");
} else if (netType == ConnectivityManager.TYPE_MOBILE
&& netSubtype == TelephonyManager.NETWORK_TYPE_UMTS
&& !telephonyManager.isNetworkRoaming()) {
Log.i("Receiver", "Mobile");
}
}
http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtype()
答案 0 :(得分:5)
So what does 15 means?
这意味着您通过移动连接的互联网连接速度有多快,因此常数15实际为HSPA+
HSPA+ (also called Evolved HSPA or 4G) is a further evolution of
HSPA that offers data speeds of up to 42 Mbps.
你可以转到post
示例代码:
if(type==ConnectivityManager.TYPE_WIFI){
return true;
}else if(type==ConnectivityManager.TYPE_MOBILE){
switch(subType){
case TelephonyManager.NETWORK_TYPE_1xRTT:
return false; // ~ 50-100 kbps
case TelephonyManager.NETWORK_TYPE_CDMA:
return false; // ~ 14-64 kbps
case TelephonyManager.NETWORK_TYPE_EDGE:
return false; // ~ 50-100 kbps
case TelephonyManager.NETWORK_TYPE_EVDO_0:
return true; // ~ 400-1000 kbps
case TelephonyManager.NETWORK_TYPE_EVDO_A:
return true; // ~ 600-1400 kbps
case TelephonyManager.NETWORK_TYPE_GPRS:
return false; // ~ 100 kbps
case TelephonyManager.NETWORK_TYPE_HSDPA:
return true; // ~ 2-14 Mbps
case TelephonyManager.NETWORK_TYPE_HSPA:
return true; // ~ 700-1700 kbps
case TelephonyManager.NETWORK_TYPE_HSUPA:
return true; // ~ 1-23 Mbps
case TelephonyManager.NETWORK_TYPE_UMTS:
return true; // ~ 400-7000 kbps
/*
* Above API level 7, make sure to set android:targetSdkVersion
* to appropriate level to use these
*/
case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11
return true; // ~ 1-2 Mbps
case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9
return true; // ~ 5 Mbps
case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13
return true; // ~ 10-20 Mbps
case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8
return false; // ~25 kbps
case TelephonyManager.NETWORK_TYPE_LTE: // API level 11
return true; // ~ 10+ Mbps
// Unknown
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
default:
return false;
}
查看NETWORK_TYPE_HSPAP
,其连接速度为10-20 Mbps
答案 1 :(得分:2)
有一个名为getSubtypeName()
的伴随方法,它将返回描述子类型的人类可读值。
编辑:挖掘源代码,它似乎是TelephonyManager.NETWORK_TYPE_*
个常量之一(例如NETWORK_TYPE_GPRS
)