Обнаружение WCDMA и HSDPA на Android

У меня есть приложение, которое работает под Android версии 1.6+, и нужно определить тип сети.

У меня проблема с HSDPA и WCDMA, хотя – у первого есть определенная константа для TelephonyManager # getNetworkType в API версии 5+, и у последнего, похоже, нет ни одного.

Кто-нибудь знает, что телефон по этим типам сетей вернется для TelephonyManager # getNetworkType до и после Android 2.0? (Я предполагаю, что в 2.0+ в сети HSDPA он вернет соответствующую константу, но остальные будут отображаться неопределенными …)

Согласно исходному коду для класса TelephonyManager в Android 1.6 , возвращаемое значение для HSPDA и WCDMA должно быть NETWORK_TYPE_UNKNOWN (0).

Если вы посмотрите на константы, определенные в документации класса Telephony Manager для разных типов сетей, вы можете увидеть, когда каждый тип сети был введен в API:

HSPDA: API версии 5+
WCDMA: (Не документировано)

Основываясь на том, что я прочитал в wikipedia на WCDMA , это также называется именем UMTS, что означает, что WCDMA-телефон вернет NETWORK_TYPE_UMTS (3).

Резюме

HSPDA:

  • Возвращает NETWORK_TYPE_UNKNOWN (0) в API версии 4 (Android <= 1.6)
  • Возвращает NETWORK_TYPE_HSDPA (8) в API версии 5+ (Android 2.0+)

WCDMA:

  • Возвращает NETWORK_TYPE_UMTS (3), поскольку API Version 1

РЕДАКТИРОВАТЬ

Следует также отметить, что, поскольку Android является открытым исходным кодом, возможно, что поставщик мобильных телефонов переопределил эти значения и функции, поэтому вполне возможно, что они могут отклоняться от версии соединительной линии.