Windows Phone 同步方式获取网络类型
Windows Phone 同步方式获取网络类型
在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API(Microsoft.Phone.Net.NetworkInformation. DeviceNetworkInformation),通过此API我们可以方便的获取相关信息。但是此API是基于异步回调的方式获取的,如果需要同步获取,那么就需要做一些特殊的处理。
以下代码定义网络类型信息类,用于存储获取的网络类型信息。
None = Wifi = ,
Mobile2G = ,
Mobile3G = ,
Mobile4G =
InterfaceName { ;
Description { ;
NetworkType InterfaceType { ; }
以下代码将从系统NetworkInterfaceInfo解析获取网络类型信息并写入到上面构造的NetworkInfo类中。
NetworkInfo netInfo = (info != netInfo.InterfaceName = netInfo.Description = netInfo.InterfaceType = netInfo.InterfaceType = netInfo.InterfaceType = netInfo.InterfaceType = netInfo.InterfaceType = netInfo.InterfaceType = }
关于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 技术。 |
下面给出通过回调的方式获取网络类型信息的实现方式。
NetworkInfo NetInfo = DnsEndPoint(, NameResolutionCallback(handle =>
NetworkInterfaceInfo info = NetInfo = }), }
下面给出如何将基于异步回调的方式转换为同步方式来获取网络类型信息,此种转换方式不仅仅只用于此处,对于所有的基于异步回调的处理都可以安装此种处理来转换成同步获取。实例代码如下:
Task<NetworkInfo> NetworkInfo result = Task.Factory.StartNew<NetworkInfo>(() =>
NetworkInfo netInfo = EventWaitHandle Wait = AutoResetEvent( DnsEndPoint(, NameResolutionCallback(handle =>
NetworkInterfaceInfo info = netInfo =
}), }
用户评论