zoukankan      html  css  js  c++  java
  • Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet)

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

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

     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

  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/tonge/p/3764580.html
Copyright © 2011-2022 走看看