我知道如何Get Network type。但我需要确定每个版本的相关标准,按GSM,WCDMA和LTE分组(不使用其他标准)。我可以像这样过滤它:
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
tech = "GPRS";
standard = "GSM";
break;
case TelephonyManager.NETWORK_TYPE_HSDPA:
tech = "HSDPA";
standard = "WCDMA";
break;
}
我是否可以使用Android API中的某些信息以优雅的方式检索此信息?
这将有助于我处理WCDMA,LTE和GSM之间以不同方式处理的移动网络的一些信息。
更新: 这不是我要求的,但非常接近。 How to determine if network type is 2G, 3G or 4G
答案 0 :(得分:0)
使用NetworkInfo。
例如,您可以在这里找到设备是否有网络的方法。
public Boolean hasDeviceConnectionToInternet(Context context) {
ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo i = conMgr.getActiveNetworkInfo();
if (i == null)
return false;
if (!i.isConnected())
return false;
if (!i.isAvailable())
return false;
return true;
}
对于您的情况,您可以要求i.getType()
获取连接类型,或i.getTypeName()
获取人类可读的描述。
您可以在此处查看API:http://developer.android.com/reference/android/net/NetworkInfo.html