Windows Phone 同步方式获取网络类型

在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API(Microsoft.Phone.Net.NetworkInformation. DeviceNetworkInformation),通过此API我们可以方便的获取相关信息。但是此API是基于异步回调的方式获取的,如果需要同步获取,那么就需要做一些特殊的处理。

以下代码定义网络类型信息类,用于存储获取的网络类型信息。

/// <summary>
    /// 网络类型
    /// </summary>
    public enum NetworkType
    {
        None = 0,
        Wifi = 1,       //Wifi
        Mobile2G = 2,   //2G网络
        Mobile3G = 3,   //3G网络
        Mobile4G = 4    //4G网络
    }

    /// <summary>
    /// 网络类型信息
    /// </summary>
    public class NetworkInfo
    {
        /// <summary>
        /// 网络接口的名称
        /// </summary>
        public string InterfaceName { get; set; }

        /// <summary>
        /// 网络接口的说明
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 网络类型
        /// </summary>
        public NetworkType InterfaceType { get; set; }
    }

以下代码将从系统NetworkInterfaceInfo解析获取网络类型信息并写入到上面构造的NetworkInfo类中。

private static NetworkInfo parseNetworkInfo(NetworkInterfaceInfo info)
        {
            NetworkInfo netInfo = new NetworkInfo();
            if (info != null)
            {
                netInfo.InterfaceName = info.InterfaceName;
                netInfo.Description = info.Description;
                switch (info.InterfaceType)
                {
                    case NetworkInterfaceType.MobileBroadbandCdma:
                    case NetworkInterfaceType.MobileBroadbandGsm:
                        switch (info.InterfaceSubtype)
                        {
                            case NetworkInterfaceSubType.Cellular_GPRS:
                            case NetworkInterfaceSubType.Cellular_1XRTT:
                            case NetworkInterfaceSubType.Cellular_EDGE:
                                netInfo.InterfaceType = NetworkType.Mobile2G;
                                break;
                            case NetworkInterfaceSubType.Cellular_3G:
                            case NetworkInterfaceSubType.Cellular_EVDO:
                            case NetworkInterfaceSubType.Cellular_EVDV:
                            case NetworkInterfaceSubType.Cellular_HSPA:
                                netInfo.InterfaceType = NetworkType.Mobile3G;
                                break;
                            case NetworkInterfaceSubType.Cellular_LTE:
                            case NetworkInterfaceSubType.Cellular_EHRPD:
                                netInfo.InterfaceType = NetworkType.Mobile4G;
                                break;
                            default:
                                netInfo.InterfaceType = NetworkType.None;
                                break;
                        }
                        break;
                    case NetworkInterfaceType.Wireless80211:
                        netInfo.InterfaceType = NetworkType.Wifi;
                        break;
                    default:
                        netInfo.InterfaceType = NetworkType.None;
                        break;
                }
            }
            return netInfo;
        }

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索网络
, break
, 类型
, case
, 获取网络类型
, 网络类型
, 获取网络内容
, 获取网络资源
同步获取
windows phone 同步、windowsphone同步工具、winphone同步通讯录、mobile phone同步工具、windows phone,以便于您获取更多的相关知识。

时间: 2024-09-15 21:15:56

Windows Phone 同步方式获取网络类型的相关文章

iOS获取网络类型的方法汇总_IOS

Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有API) 代码: 复制代码 代码如下: typedef enum {     NetWorkType_None = 0,     NetWorkType_WIFI,     NetWorkType_2G,     NetWorkType_3G, } NetWorkType; UIApplicatio

java获取网络类型的方法_java

本文实例讲述了java获取网络类型的方法.分享给大家供大家参考.具体如下: /**** * 获取网络类型 * * @param context * @return */ public static String getNetType(Context context) { try { ConnectivityManager connectMgr = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVIC

Windows下通过bat获取网络连线实际名称,加强IP类设置脚本的兼容性_DOS/BAT

其中比较难解决的问题就是获取网络连线的实际名称,大部分人使用的IP设置脚本都是将[本地连接]写死在代码中,可实际上并不是所有电脑都叫本地连接:比如有的用户电脑可能升级了网卡驱动,或者更换了网卡,导致网络连线的名称变成"本地连接2",又比如有无聊好事者(某产线的作业员电脑),将网络连线的名称各种DIY,我就见过一个修改成"操蛋的青春",瞬间无语! 好了,废话不多说,直接上菜! 对于网络连线的实际名称,可能出现的情况有: 1.网卡更换/驱动升级导致名称变更,比如本地连接

Android中Java根据文件头获取文件类型的方法_Android

本文实例讲述了Android中Java根据文件头获取文件类型的方法.分享给大家供大家参考,具体如下: 前面讲过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好.具体可查看Android系统使用MediaFile类判断音频文件类型.其实,获取文件类型最好的办法便是根据文件头信息来判断.下面贴出相关代码: public class FileType { public static final HashMap<String, Str

Android检查手机网络状态及网络类型的方法_Android

本文实例讲述了Android检查手机网络状态及网络类型的方法.分享给大家供大家参考.具体分析如下: //judge network status is connecting or not public static boolean checkNetworkConnected(Context context) { if (null!=context) { ConnectivityManager connectivityManager = (ConnectivityManager) context

vc++-windows如何获取当前应用程序使用的网络类型

问题描述 windows如何获取当前应用程序使用的网络类型 请问各位,Windows下如何获取当前应用程序使用的网络类型?是WIFI还是有线网络. 1.目前实在是没找到类似安卓或者IOS那样的直接就可以读取的API.有的话跪求 2.现在所能想到的就是使用GetAdaptersInfo遍历获取到所有的网卡类型和对应的IP地址, 然后根据gethostbyname得到本地地址,用这个本地地址去匹配遍历得到的网卡IP.这样是否会有问题呢(考虑多网卡的情况) 解决方案 windows上面没有直接提供这一

重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化

原文:重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 [源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例1.演示如何获取网络的相关信息Communication/NetworkInfo.xa

Windows 8 Store Apps学习(60) 通信: 获取网络信息, 序列化和反序列化

介绍 重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例 1.演示如何获取网络的相关信息 Communication/NetworkInfo.xaml.cs /* * 演示如何获取网络的相关信息 */ using System; using System.Collections.Generic; using Windows.Networking.Connectivity; using Windo

Android编程获取网络连接方式及判断手机卡所属运营商的方法_Android

本文实例讲述了Android编程获取网络连接方式及判断手机卡所属运营商的方法.分享给大家供大家参考,具体如下: 问题:项目中写的网络模块,感觉有点乱:两套代码 --模拟器.真机,维护起来十分麻烦. 解决办法:代码自动去检查到那种网络环境,然后调用不同的联网方式. 查看了模拟器上默认的接入点:移动网络 -- APN = "internet" 1.通过获取apn的名称,来判断网络 // 获取Mobile网络下的cmwap.cmnet private int getCurrentApnInU