在Android上获取标准网络类型的最简单方法是什么?

时间:2014-10-16 13:36:21

标签: android telephonymanager

我知道如何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

1 个答案:

答案 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