Windows Phone 7(WP7)开发 获取网络状态

fmms 9年前

一、判断是否有网络数据连接:

最基本的网络状态判断,如果没有网络连接,一切操作都进行不下去啦。

 Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

 

二、判断网络类型(GSM/CDMA/WIFI/Ethernet):

在一般的应用程序中,需要知道的网络状态也就三种:无网络、WIFI/Ethernet、手机网络。

三者的区别就是:

1、“无网络”:不解释,大家都懂的。

2、“WiFi/Ethernet”:一般情况下速度比手机网络快,而且不计流量,更适合进行较大数据的操作,如下载个离线地图什么的。

3、“手机网络”:2G、3G网络都算作这种吧。优点就是方便,只要手机和运营商支持,只要有信号,就有网络。缺点就是费用较高,而且速度一般情况下不如上面那种快。

我们做应用应该从用户的角度考虑,根据用户的网络环境,提供适当的服务。这就需要在应用中判断网络状态然后采取适当的操作。

        public static string GetNetStates()          {              var info = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType;                switch (info)              {                  case NetworkInterfaceType.MobileBroadbandCdma:                      return "CDMA";                  case NetworkInterfaceType.MobileBroadbandGsm:                      return "CSM";                  case NetworkInterfaceType.Wireless80211:                      return "WiFi";                  case NetworkInterfaceType.Ethernet:                      return "Ethernet";                  case NetworkInterfaceType.None:                      return "None";                  default:                      return "Other";              }             }

  

三、更细致的判断网络类型(3G/2G/WIFI/Ethernet):

在3G时代的今天,有的时候我们还需要知道用户的手机网络是3G的或是2G的。(这个方法是在MSDN论坛上看到的)

public static string NetName { get; set; }          public static void GetNetName()          {              DeviceNetworkInformation.ResolveHostNameAsync(                  new DnsEndPoint("www.baidu.com", 80),                  new NameResolutionCallback(handle =>                  {                      NetworkInterfaceInfo info = handle.NetworkInterface;                      if (info != null)                      {                          switch (info.InterfaceType)                          {                              case NetworkInterfaceType.Ethernet:                                  NetName = "Ethernet";                                  break;                              case NetworkInterfaceType.MobileBroadbandCdma:                              case NetworkInterfaceType.MobileBroadbandGsm:                                  switch (info.InterfaceSubtype)                                  {                                      case NetworkInterfaceSubType.Cellular_3G:                                      case NetworkInterfaceSubType.Cellular_EVDO:                                      case NetworkInterfaceSubType.Cellular_EVDV:                                      case NetworkInterfaceSubType.Cellular_HSPA:                                          NetName = "3G";                                          break;                                      case NetworkInterfaceSubType.Cellular_GPRS:                                      case NetworkInterfaceSubType.Cellular_EDGE:                                      case NetworkInterfaceSubType.Cellular_1XRTT:                                          NetName = "2G";                                          break;                                      default:                                          NetName = "None";                                          break;                                  }                                  break;                              case NetworkInterfaceType.Wireless80211:                                  NetName = "WiFi";                                  break;                              default:                                  NetName = "None";                                  break;                          }                      }                      else                         NetName = "None";                  }), null);          }

 

欢迎转载,转载请注明出处:

锦燕云:

http://www.cnblogs.com/vistach/archive/2012/02/09/Windows_Phone_WP7_Develop_NetworkInterface_3G_WCDMA_GSM_WiFi.html