Windows Phone 擷取網路類型(GSM/CDMA/WIFI/Ethernet)

來源:互聯網
上載者:User

標籤:c   a   http   int   get   com   

一、判斷是否有網路資料連線:

最基本的網路狀態判斷,如果沒有網路連接,一切操作都進行不下去啦。

 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.xnadevelop.com/post/2012/09/02/Windows-Phone-e88eb7e58f96e7bd91e7bb9ce78ab6e68081.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.