• 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

  • 相关阅读:
    周赛D. Digging for Gold(扫描线)
    CF1209F Koala and Notebook(最短路+拆点)
    P6793 [SNOI2020]字符串(后缀树上DP)
    [HEOI2016/TJOI2016]字符串(后缀自动机,可持久化线段树,线段树合并,二分答案)
    CF1166F Vicky's Delivery Service(并查集,启发式合并)
    P4248 [AHOI2013]差异(后缀树)
    CF1175F The Number of Subpermutations(单调栈,ST表)
    CF666E Forensic Examination(后缀自动机,可持久化线段树合并)
    GYM103069G. Prof. Pang's sequence
    [转]C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现
  • 原文地址:https://www.cnblogs.com/tonge/p/3764580.html
Copyright © 2020-2023  润新知