Android TelephonyManager.getNetworkType()以承载速度顺序返回常量值?

Android TelephonyManager.getNetworkType()以承载速度顺序返回常量值?,android,Android,getNetworkType()返回一个常量值 根据可能的承载链路速度,常量值似乎具有整数顺序 我知道以以下方式使用常量通常是不好的 然而,我们可以用它来确定应用程序功能的基本截止点,并让它在API级别之间工作吗?(在API-v1中,0x03以上没有任何内容) 我真的不会指望这种行为。你不能假设它们是有序的,因为它们不是。例如,LTE是13,而HSPAP(HSPA+)是15。这些都不妥当。我写了一段“速度排名”代码,它为每个网络类型分配自己的速度排名 public static int getN

getNetworkType()返回一个常量值

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

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

然而,我们可以用它来确定应用程序功能的基本截止点,并让它在API级别之间工作吗?(在API-v1中,0x03以上没有任何内容)


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

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

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;
}

回答得很好。这个问题是在许多这些网络类型被添加到android API之前提出的,因此很高兴看到您的代码能够完成最终需要的工作。谢谢
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;
}