首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkInfo子类型值

NetworkInfo子类型值
EN

Stack Overflow用户
提问于 2014-08-20 21:35:30
回答 2查看 4.3K关注 0票数 2

如果我通过Wi启动应用程序,然后切换到3G,它会打印0,15,所以它是移动网络,但我不知道为什么这个子类型意味着。然后我切换回Wi,它打印0,3,一秒钟(移动网络,NETWORK_TYPE_UMTS),显示我连接到我的UI上的移动网络,最后它连接到Wi,它打印1,0。那么15意味着什么呢?文档没有说明这些值是什么。

代码语言:javascript
复制
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()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-20 21:46:13

还有一个名为getSubtypeName()的方法,它将返回一个描述子类型的人类可读的值。

编辑:在源代码中挖掘,它似乎是TelephonyManager.NETWORK_TYPE_*常量之一(例如,NETWORK_TYPE_GPRS)。

票数 2
EN

Stack Overflow用户

发布于 2014-08-20 21:52:47

代码语言:javascript
复制
So what does 15 means?

它意味着您通过移动连接的internet连接速度有多快,所以常数15实际上是HSPA+

代码语言:javascript
复制
HSPA+ (also called Evolved HSPA or 4G) is a further evolution of 
HSPA that offers data speeds of up to 42 Mbps.

你可以去这个post

样本代码:

代码语言:javascript
复制
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的连接速度

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25414830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档