我有一个在 Android 1.6+ 版本上运行的应用程序,需要检测网络类型。
不过,我遇到了 HSDPA 和 WCDMA 的问题 - 前者在 API 版本 5+ 中只有 TelephonyManager#getNetworkType 的定义常量,而后者似乎根本没有。
有谁知道在 Android 2.0 之前和之后这些网络类型上的电话会为 TelephonyManager#getNetworkType 返回什么? (我假设在 2.0+ 的 HSDPA 网络上它会返回适当的常量,但其余的似乎未定义...)
最佳答案
根据源代码为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)。
总结
高速数据传输:
- 在 API 版本 4 (Android <= 1.6) 中返回
NETWORK_TYPE_UNKNOWN
(0) - 在 API 版本 5+ (Android 2.0+) 中返回
NETWORK_TYPE_HSDPA
(8)
WCDMA:
- 自 API 版本 1 起返回
NETWORK_TYPE_UMTS
(3)
编辑
我还应该指出,由于 Android 是开源的,因此手机供应商可能已经覆盖了这些值和功能,因此它们可能会偏离主干版本。
关于android - 在 Android 上检测 WCDMA 和 HSDPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180679/