zoukankan      html  css  js  c++  java
  • wp检测是否是手机网络还是wifi网络

    原文发布时间为:2013-06-22 —— 来源于本人的百度文章 [由搬家工具导入]

    注意断开手机数据线进行测试,我就是被这个搞的一直忙活很长时间一直测不出来,一直都是Ethernet。。。


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

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

    Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

     

    二、判断网络类型(GSM/CDMA/WIFI/Ethernet):

    在一般的应用程序中,需要知道的网络状态也就三种:无网络、WIFI/Ethernet、手机网络。

    三者的区别就是:

    1、“无网络”:不解释,大家都懂的。

    2、“WiFi/Ethernet”:一般情况下速度比手机网络快,而且不计流量,更适合进行较大数据的操作,如下载个离线地图什么的。

    3、“手机网络”:2G、3G网络都算作这种吧。优点就是方便,只要手机和运营商支持,只要有信号,就有网络。缺点就是费用较高,而且速度一般情况下不如上面那种快。

    我们做应用应该从用户的角度考虑,根据用户的网络环境,提供适当的服务。这就需要在应用中判断网络状态然后采取适当的操作。

    publicstaticstringGetNetStates()
    {
    varinfo = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType;

    switch(info)
    {
    caseNetworkInterfaceType.MobileBroadbandCdma:
    return"CDMA";
    caseNetworkInterfaceType.MobileBroadbandGsm:
    return"CSM";
    caseNetworkInterfaceType.Wireless80211:
    return"WiFi";
    caseNetworkInterfaceType.Ethernet:
    return"Ethernet";
    caseNetworkInterfaceType.None:
    return"None";
    default:
    return"Other";
    }   
    }

      

    三、更细致的判断网络类型(3G/2G/WIFI/Ethernet):

    在3G时代的今天,有的时候我们还需要知道用户的手机网络是3G的或是2G的。(这个方法是在MSDN论坛上看到的)

    publicstaticstringNetName { getset; }
    publicstaticvoidGetNetName()
    {
    DeviceNetworkInformation.ResolveHostNameAsync(
    newDnsEndPoint("www.baidu.com"80),
    newNameResolutionCallback(handle =>
    {
    NetworkInterfaceInfo info = handle.NetworkInterface;
    if(info != null)
    {
    switch(info.InterfaceType)
    {
    caseNetworkInterfaceType.Ethernet:
    NetName = "Ethernet";
    break;
    caseNetworkInterfaceType.MobileBroadbandCdma:
    caseNetworkInterfaceType.MobileBroadbandGsm:
    switch(info.InterfaceSubtype)
    {
    caseNetworkInterfaceSubType.Cellular_3G:
    caseNetworkInterfaceSubType.Cellular_EVDO:
    caseNetworkInterfaceSubType.Cellular_EVDV:
    caseNetworkInterfaceSubType.Cellular_HSPA:
    NetName = "3G";
    break;
    caseNetworkInterfaceSubType.Cellular_GPRS:
    caseNetworkInterfaceSubType.Cellular_EDGE:
    caseNetworkInterfaceSubType.Cellular_1XRTT:
    NetName = "2G";
    break;
    default:
    NetName = "None";
    break;
    }
    break;
    caseNetworkInterfaceType.Wireless80211:
    NetName = "WiFi";
    break;
    default:
    NetName = "None";
    break;
    }
    }
    else
    NetName = "None";
    }), null);
    }
  • 相关阅读:
    WPF样式之画刷结合样式
    年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
    30分钟学会XAML
    spring注解之@Import注解的三种使用方式
    大白话讲解Spring的@bean注解
    SpringBoot中的五种对静态资源的映射规则
    Spring注解之@Autowired、@Qualifier、@Resource、@Value
    Spring中如何使用工厂模式实现程序解耦?
    Spring注解之@Component、@Controller、@Service、@Repository
    Spring整合Redis
  • 原文地址:https://www.cnblogs.com/handboy/p/7182572.html
Copyright © 2011-2022 走看看