一、判斷是否有網路資料連線:
最基本的網路狀態判斷,如果沒有網路連接,一切操作都進行不下去啦。
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);
}
我的聯通WCDMA測試時,網路狀態為 NetworkInterfaceSubType.Cellular_3G,個人猜測,WCDMA的3.5G版本會出現NetworkInterfaceSubType.Cellular_HSPA。
至於TD-SCDMA,和CDMA2000,由於目前沒有裝置,無法測試。
(
歡迎轉載,轉載請註明出處:
錦燕云:
http://www.cnblogs.com/vistach/archive/2012/02/09/Windows_Phone_WP7_Develop_NetworkInterface_3G_WCDMA_GSM_WiFi.html
)