在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API(Microsoft.Phone.Net.NetworkInformation. DeviceNetworkInformation),通过此API我们可以方便的获取相关信息。但是此API是基于异步回调的方式获取的,如果需要同步获取,那么就需要做一些特殊的处理。
以下代码定义网络类型信息类,用于存储获取的网络类型信息。
以下代码将从系统NetworkInterfaceInfo解析获取网络类型信息并写入到上面构造的NetworkInfo类中。
关于NetworkInterfaceInfo. NetworkInterfaceSubType的各种网络类型的说明给出以下表格:
网络类型
说明
Unknown
没有有关网络接口类型的其他信息。
Cellular_GPRS
使用通用分组无线业务 (General Packet Radio Service, GPRS) 蜂窝技术的网络接口。这是 2.5G 技术。
Cellular_1XRTT
使用无线传输技术 (Radio Transmission Technology, 1xRTT) 蜂窝技术的网络接口。这是 2.5G 技术。
Cellular_EVDO
Evolution Data Only (EV-DO) 蜂窝技术的网络接口。这是 3G 技术。
Cellular_EDGE
使用增强型数据速率 GSM 演进 (Enhanced Data rates for GSM Evolution, EDGE) 蜂窝技术的网络接口。这是2.5G 技术。
Cellular_3G
使用第三代 (3G) 蜂窝技术的网络接口。
Cellular_HSPA
使用高速下行分组接入 (High-Speed Downlink Packet Access, HSPA) 蜂窝技术的网络接口。这是 3.5G 技术。
Cellular_EVDV
使用数据和语音演进 (Evolution Data and Voice, EV-DV) 蜂窝技术的网络接口。这是 3G 技术。
Desktop_PassThru
桌面 pass- through 网络接口。
WiFi
使用无线技术 (802.11) 的网络接口。
Cellular_LTE
使用长期进化 (Long Term Evolution,LTE) 蜂窝技术的网络接口。这是 4G 技术。
Cellular_EHRPD
使用增强型高速率数据包 (Enhanced High Rate Packet Data,EHRPD) 蜂窝技术的网络接口。这是 4G 技术。
下面给出通过回调的方式获取网络类型信息的实现方式。
下面给出如何将基于异步回调的方式转换为同步方式来获取网络类型信息,此种转换方式不仅仅只用于此处,对于所有的基于异步回调的处理都可以安装此种处理来转换成同步获取。实例代码如下: