2014-10-16 45 views
-1

我知道如何Get Network type。但是我需要为每个版本确定相关的标准,由GSM,WCDMA和LTE组成(其他标准将不会被使用)。我可以像这样过滤它:在Android上获得标准网络类型的最简单方法是什么?

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

使用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

+0

韩国社交协会,但实际上,这并不是问题的关键。 'i.getTypeName()'将返回例如“WIFI”或“MOBILE”,在我的情况下,我假设一个移动网络。如果我使用'i.getSubTypeName()'它将作为'TelephonyManager teleMan =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); int networkType = teleMan.getNetworkType();' – 2014-10-16 14:50:10

相关问题