Windows Phone 7(WP7)開發 獲取網絡狀態

fmms 12年前發布 | 24K 次閱讀 Windows Phone開發 移動開發 Windows Phone

一、判斷是否有網絡數據連接:

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

 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

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!