在Android上检测WCDMA和HSDPA

时间:2011-03-03 12:26:27

标签: android networking

我有一款适用于Android版本1.6+的应用,需要检测网络类型。

我遇到了HSDPA和WCDMA的问题 - 前者只有API版本5+中TelephonyManager#getNetworkType的定义常量,而后者似乎根本没有。

有没有人知道这些网络类型的手机会在Android 2.0之前和之后返回TelephonyManager#getNetworkType? (我假设在HSDPA网络上的2.0+,它将返回适当的常量,但其余的显示未定义...)

1 个答案:

答案 0 :(得分:7)

根据TelephonyManager class in Android 1.6的源代码,HSPDA和WCDMA的返回值应为NETWORK_TYPE_UNKNOWN(0)。

如果查看Telephony Manager class documentation中为各种网络类型定义的常量,您可以看到每种网络类型何时引入API:

HSPDA:API版本5+
WCDMA :(未记录)

基于我在维基百科上WCDMA所读到的内容,它的名称也是UMTS,这意味着WCDMA手机将返回NETWORK_TYPE_UMTS(3)。

<强>摘要

HSPDA:

  • 在API Version 4(Android&lt; = 1.6)
  • 中返回NETWORK_TYPE_UNKNOWN(0)
  • 在API Version 5+(Android 2.0 +)
  • 中返回NETWORK_TYPE_HSDPA(8)

WCDMA:

  • 自API Version 1起返回NETWORK_TYPE_UMTS(3)

修改

我还应该指出,由于Android是开源的,手机提供商可能已经覆盖了这些价值和功能,因此它们可能会偏离中继版本。