博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet)
阅读量:6449 次
发布时间:2019-06-23

本文共 3896 字,大约阅读时间需要 12 分钟。

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

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

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

转载于:https://www.cnblogs.com/tonge/p/3764580.html

你可能感兴趣的文章
C# string函数
查看>>
1、串(字符串)以及串的模式匹配算法
查看>>
正则表达式30分钟入门教程
查看>>
[原创]使用logcat快速抓取android崩溃日志
查看>>
这几款软件程序员的最爱
查看>>
Linux 安装JDK
查看>>
JSONObject
查看>>
六.面向对象
查看>>
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
ubuntu Linux 操作系统安装与配置
查看>>
操作系统os常识
查看>>
乱码的情况
查看>>
mysql安装问题
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
DHCP的工作原理
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
learn go recursive
查看>>
对于double小数点后取两位
查看>>