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

Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet),布布扣,bubuko.com

时间: 2024-10-13 00:11:11

Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet)的相关文章

Android获取网络类型

public static final String NETWORK_CLASS_UNKNOWN = "unknown"; public static final String NETWORK_CLASS_WIFI = "wifi"; public static final String NETWORK_CLASS_2_G = "2g"; public static final String NETWORK_CLASS_3_G = "3

一起学android之如何获取网络类型并判断是否可用(20)

ConnectivityManager主要管理和网络连接相关的操作,通过getSystemService(Context.CONNECTIVITY_SERVICE)获 取网络连接的服务.因此我们可以通过ConnectivityManager这个类下的getActiveNetworkInfo()方法来获取当前的网络 连接状态,这个方法返回的是NetworkInfo对象, NetworkInfo描述了当前网络Mobile和Wifi的状态.NetworkInfo类中有 三个方法:(1)getType(

ios 获取网络类型

//获取网络类型 +(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplication]; NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews]; NSString *state = [[NSString alloc]ini

iOS获取网络类型的四种方法

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

Android检测网络是否可用并获取网络类型

在类中使用getSystemService的时候需要这样进行使用:1. public class JajaMenu extends Activity { public static JajaMenu instance; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); instance=this; } //获取实例 public

android 获取网络类型名称2G 3G 4G wifi

首先工程Manifest文件要引用: 1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //获取网络服务 1 public static String getNetworkTypeName(Co

Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

http://www.mobiletuts.me 获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager  类,用于网络连接状态的检测. Android开发文档这样描述ConnectivityManager 的作用: Class that answers queries about the state of network connectivi

Android网络类型判断(2g、3g、wifi)

判断网络类型是wifi,还是3G,还是2G网络,对不同 的网络进行不同的处理,现将判断方法整理给大家,以供参考 说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上 没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果 发送给大家. ConnectivityManager connectMgr = (ConnectivityManager) this .getSystemService(Context.CONNECTIVITY_SERVICE);

android运营商和网络类型分析

一些需求需要获取运营商和网络类型,下面对运营商和网络类型做分析. 先抛出一些废话的定义: GSM:全球移动通讯系统Global System of Mobile communication就是众所周知的GSM,是当前应用最为广泛的移动电话标准. CDMA:码分多址(CDMA)是在数字技术的分支--扩频通信技术上发展起来的一种崭新而成熟的无线通信技术. 可见,这两者是技术标准,和网络类型及制式无关. 进入正题. 1.获取话机类型 这个可以通过方法TelephonyManager#getPhoneT