2014-10-16 82 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

相關問題