欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

Windows Phone 同步方式获取网络类型

来源: 开发者 投稿于  被查看 43751 次 评论:245

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 =  
                 }),                                          }
相关频道:

用户评论