如何以编程方式识别 android 手机使用的数据连接是 2.75G、3G 还是 4G?
我需要这个,用于从使用不同数据连接的数据服务的多个用户那里收集数据。
使用 TelephonyManager.GetNetworkType()。网络类型与您的要求相对应,如下所示:
基于GSM的系统:
NETWORK_TYPE_GPRS 当前网络是 GPRS - 2G
NETWORK_TYPE_EDGE 当前网络是 EDGE - 有时称为 2.75G
NETWORK_TYPE_UMTS 当前网络是 UMTS - 3G
NETWORK_TYPE_HSDPA 当前网络是 HSDPA - 3G
NETWORK_TYPE_HSUPA 当前网络是 HSUPA - 3G
NETWORK_TYPE_HSPA 当前网络是 HSPA - 3G
NETWORK_TYPE_HSPAP 当前网络是 HSPA+ - 3G,但有时称为 3.5G
NETWORK_TYPE_LTE 当前网络是 LTE - 4G
NETWORK_TYPE_IDEN 当前网络是 iDen -一个基于 GSM 的摩托罗拉系统- 对应 2G
基于CDMA的系统:
NETWORK_TYPE_CDMA 当前网络为 CDMA:IS95A 或 IS95B - 2G
NETWORK_TYPE_1xRTT 当前网络为 1xRTT - 有时称为 2.5G。
NETWORK_TYPE_EHRPD 当前网络是 eHRPD - 我找到的关于 eHRPD 的最佳解释在这里。基本上,它是 EVDO 的演进,通过 LTE 核心进行路由,以便 EVDO 可以无缝移交给 LTE。LTE 是高通公司为 CDMA 手机选择的 4G 系统(参见此处, “UMB”下)。eHRPD 是 3G。
NETWORK_TYPE_EVDO_0 当前网络是 EVDO 修订版 0 - 3G
NETWORK_TYPE_EVDO_A 当前网络是 EVDO 修订版 A - 3G
NETWORK_TYPE_EVDO_B 当前网络是 EVDO 修订版 B - 3G
在Wikipedia上有一个移动网络标准的比较,包括一些关于最大速度的数据,这些数据将 2G/3G/4G 的估计纳入上下文。 查看 HSPA+ 和 LTE 的速度。
您可以在TelephonyManager示例代码的帮助下完成此操作。