Android TelephonyManager.getNetworkType () возвращал постоянные значения в порядке скорости передачи данных? - PullRequest
0 голосов
/ 08 марта 2010

TelephonyManager.getNetworkType () возвращает одно из постоянных значений.

Похоже, что значения констант имеют целочисленный порядок по возможной скорости канала-носителя.

Я знаю, что использование константных значений, используемых следующим образом, обычно плохо,

однако можно ли это использовать для определения базового уровня функциональности приложения и работает ли он между уровнями API? (в API-v1 не было ничего выше 0x03)

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

Ответы [ 2 ]

1 голос
/ 09 января 2013

Вы не можете предполагать, что они в порядке, потому что это не так. Например, 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;
}
0 голосов
/ 09 марта 2010

Я бы на это не рассчитывал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...