首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android TelephonyManager.getNetworkType()返回的常量值是不是按速度顺序排列的?

Android TelephonyManager.getNetworkType()返回的常量值是不是按速度顺序排列的?
EN

Stack Overflow用户
提问于 2010-03-09 03:47:07
回答 2查看 2.1K关注 0票数 0

TelephonyManager.getNetworkType()返回一个常量值。

根据可能的承载链路速度,常量值似乎具有整数顺序。

我知道以下面的方式使用常量值通常是不好的,

然而,是否可以使用它来确定应用程序功能的基本分界点,并使其在API级别之间工作?(在API-v1中没有大于0x03的值)

代码语言:javascript
运行
复制
if( telephonyManager.getNetworkType() > TelephonyManager.NETWORK_TYPE_EDGE )
{
     return "3G! party on!";
}
else if( telephonyManager.getNetworkType() > TelephonyManager.NETWORK_TYPE_UNKNOWN )
{
     return "2G, OK. just don't go nuts!";
}
else 
{
     return "No data sorry"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 06:56:16

你不能假设它们是有序的,因为它们不是。例如,LTE是13,而HSPAP (HSPA+)是15,这是不符合顺序的。我写了一段“速度排名”代码,它为每种网络类型分配了自己的速度排名。

代码语言:javascript
运行
复制
public static int getNetTypeSpeedRank(int t) {

    switch (t) {
        case -1:
            t = -1;
        case ContextManager.MDM_NETWORK_TYPE_UNKNOWN:
            t = 0;
            break;
        case ContextManager.MDM_NETWORK_TYPE_IDEN:
            t = 1;
            break;
        case ContextManager.MDM_NETWORK_TYPE_GPRS:
            t = 2;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EDGE:
            t = 3;
            break;
        case ContextManager.MDM_NETWORK_TYPE_UMTS:
            t = 4;
            break;
        case ContextManager.MDM_NETWORK_TYPE_CDMA:
            t = 5;
            break;
        case ContextManager.MDM_NETWORK_TYPE_1xRTT:
            t = 6;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_0:
            t = 7;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_A:
            t = 8;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EVDO_B:
            t = 9;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSDPA:
            t = 10;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSUPA:
            t = 11;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSPA:
            t = 12;
            break;
        case ContextManager.MDM_NETWORK_TYPE_HSPAP:
            t = 13;
            break;
        case ContextManager.MDM_NETWORK_TYPE_EHRPD:
            t = 14;
            break;
        case ContextManager.MDM_NETWORK_TYPE_LTE:
            t = 15;
            break;
        default:
            t = 16;
    }

    return t;
}
票数 1
EN

Stack Overflow用户

发布于 2010-03-09 05:42:31

我真的不会指望这种行为。

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

https://stackoverflow.com/questions/2404210

复制
相关文章

相似问题

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