2017-01-24 7 views

답변

2

여기를 보라 ->How to determine if network type is 2G, 3G or 4G

getNetworkType() 당신에게 반환을 현재 데이터 연결에 대한 NETWORK_TYPE_xxxx, 필자는이 방법을 내 작업에 대한 응답 중에서 선택하고 whateve R 이러한 스위치의 경우 중 필터링 할 네트워크 유형은

당신은 당신의 유틸리티 클래스에서 직접이 다음과 같은 방법을 넣을 수 있습니다 :

public String getNetworkClass(Context context) { 
     TelephonyManager mTelephonyManager = (TelephonyManager) 
       context.getSystemService(Context.TELEPHONY_SERVICE); 
     int networkType = mTelephonyManager.getNetworkType(); 
     switch (networkType) { 
      case TelephonyManager.NETWORK_TYPE_GPRS: 
      case TelephonyManager.NETWORK_TYPE_EDGE: 
      case TelephonyManager.NETWORK_TYPE_CDMA: 
      case TelephonyManager.NETWORK_TYPE_1xRTT: 
      case TelephonyManager.NETWORK_TYPE_IDEN: 
       return "2G"; 
      case TelephonyManager.NETWORK_TYPE_UMTS: 
      case TelephonyManager.NETWORK_TYPE_EVDO_0: 
      case TelephonyManager.NETWORK_TYPE_EVDO_A: 
      case TelephonyManager.NETWORK_TYPE_HSDPA: 
      case TelephonyManager.NETWORK_TYPE_HSUPA: 
      case TelephonyManager.NETWORK_TYPE_HSPA: 
      case TelephonyManager.NETWORK_TYPE_EVDO_B: 
      case TelephonyManager.NETWORK_TYPE_EHRPD: 
      case TelephonyManager.NETWORK_TYPE_HSPAP: 
       return "3G"; 
      case TelephonyManager.NETWORK_TYPE_LTE: 
       return "4G"; 
      default: 
       return "Unknown"; 
     } 
    } 

이 깨끗한 & 명확한 문서를 읽기 ->https://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkType()

편집

당신이 만약 당신은 와이파이 스캔 결과를 수신하는 BroadcastReceiver를 작성해야 스캔 을하고 싶지 : 및 스캔이 mWifiManager을 할당합니다 onCreate()에서 NETWORK_TYPE_LTE

private final BroadcastReceiver mWifiScanReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context c, Intent intent) { 
     if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { 
      List<ScanResult> mScanResults = mWifiManager.getScanResults(); 
      // add your logic here to filter 
     } 
    } 
} 

으로 필터링하고 시작 :

mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
registerReceiver(mWifiScanReceiver, 
     new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
mWifiManager.startScan(); 
+0

을 답장을 보내 주셔서 감사합니다. 그러나 이것은 내 검색어가 아니며, 요점은 ** 기기가 연결되지 않았으며 ** 기기가 어떤 4G 네트워크를 지원하는지 확인하고 싶습니다. –

+0

앱이 필요하십니까? 거기에 장치 사양에 –

+0

답장을 보내 주셔서 감사합니다. 그러나 귀하의 응답은 4G LTE가 아닌 Wifi를 검색하기위한 것입니다! –

0
public String getNetworkClass(Context context) { 
     TelephonyManager mTelephonyManager = (TelephonyManager) 
       context.getSystemService(Context.TELEPHONY_SERVICE); 
     int networkType = mTelephonyManager.getNetworkType(); 
     switch (networkType) { 
      case TelephonyManager.NETWORK_TYPE_GPRS: 
      case TelephonyManager.NETWORK_TYPE_EDGE: 
      case TelephonyManager.NETWORK_TYPE_CDMA: 
      case TelephonyManager.NETWORK_TYPE_1xRTT: 
      case TelephonyManager.NETWORK_TYPE_IDEN: 
       return "2G"; 
      case TelephonyManager.NETWORK_TYPE_UMTS: 
      case TelephonyManager.NETWORK_TYPE_EVDO_0: 
      case TelephonyManager.NETWORK_TYPE_EVDO_A: 
      case TelephonyManager.NETWORK_TYPE_HSDPA: 
      case TelephonyManager.NETWORK_TYPE_HSUPA: 
      case TelephonyManager.NETWORK_TYPE_HSPA: 
      case TelephonyManager.NETWORK_TYPE_EVDO_B: 
      case TelephonyManager.NETWORK_TYPE_EHRPD: 
      case TelephonyManager.NETWORK_TYPE_HSPAP: 
       return "3G"; 
      case TelephonyManager.NETWORK_TYPE_LTE: 
       return "4G"; 
      default: 
       return "Unknown"; 
     } 
    } 


Also, I would first check if connected network is WiFi or Mobile. 

    public static boolean getActiveNetworkType(Context context) { 
      boolean is_wfi_conected = false; 
      ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      if (activeNetwork != null && activeNetwork.isConnected() && activeNetwork.isAvailable()) { // connected to the internet 
       if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { 
        // connected to Wifi 
        //GET IP Address of connected WIFI 
        // WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
        is_wfi_conected = true; 


       } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { 
        is_wfi_conected = false; 
       } 
      } else { 
       // not connected to the internet 
      } 
      return is_wfi_conected; 
     }