如何检查特定设备是否支持Android中的4G网络?

时间:2011-10-25 10:22:52

标签: android 4g

我想检查特定设备是否具有4G网络的硬件支持

我将详细说明这个问题...... 在应用程序中,我们有一个设置页面,用户可以在其中进行选择并允许应用程序仅在选定的网络中运行。 例如。用户可以选择该应用仅在WiFi网络中运行或仅在3G网络中运行等。

所有网络都有CheckBox首选项WiFi,2G,3G 4G等。 现在如果设备不支持4G网络,我想隐藏4G选择复选框 所有剩余的功能都已完成。我对这个问题感到震惊,如何检测设备是否支持4G? 请注意我想检测设备上的4G 的硬件支持,而不是4G连接是否连接。
非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo[] info = cm.getAllNetworkInfo();
   for(int i=0; i <info.length; i++){
       Log.i("netinfo"+i, info[i].getType()+"");
       Log.i("netinfo"+i, info[i].getTypeName());
       Log.i("netinfo"+i, info[i].getSubtype()+"");
       Log.i("netinfo"+i, info[i].getSubtypeName());
   }

使用此代码并获取设备上的所有可用选项。我认为你应该能够获得该设备的所有功能。

和网络类型信息出现在http://developer.android.com/reference/android/telephony/TelephonyManager.html

我认为从API级别11添加的网络类型是4g。自己检查一下。

答案 1 :(得分:1)

这可能有用。它应检查WiMax 4g:

    private boolean is4gavailable() {
    ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mobileInfo = connec.getNetworkInfo(0);
    NetworkInfo wifiInfo = connec.getNetworkInfo(1);
    NetworkInfo wimaxInfo = connec.getNetworkInfo(6);


    if (wimaxInfo!=null) {
    return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting() || wimaxInfo.isConnectedOrConnecting();
    }
    else {
    return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting();
    }
}

请尝试查看this以获得更多说明。

答案 2 :(得分:0)

  Context context = MainActivity.this;
  public synchronized static boolean isNetAvailable(Context context){

        boolean isNetAvailable=false;

        if ( context != null ){
            ConnectivityManager mgr = (ConnectivityManager) 
  context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if ( mgr != null )
               {
                boolean mobileNetwork = false;
                boolean wifiNetwork = false;
                boolean wiMaxNetwork = false;
                boolean mobileNetworkConnecetd = false;
                boolean wifiNetworkConnecetd = false;
                boolean wiMaxNetworkConnected = false;
                NetworkInfo mobileInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                NetworkInfo wifiInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                NetworkInfo wiMaxInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX);
                if ( mobileInfo != null )
                    mobileNetwork = mobileInfo.isAvailable();                       
                if ( wifiInfo != null )
                    wifiNetwork = wifiInfo.isAvailable();

                if(wiMaxInfo != null)
                    wiMaxNetwork = wiMaxInfo.isAvailable();

                if(wifiNetwork == true || mobileNetwork == true || wiMaxNetwork == true){
                    mobileNetworkConnecetd = mobileInfo.isConnectedOrConnecting();
                    wifiNetworkConnecetd = wifiInfo.isConnectedOrConnecting();
                    wiMaxNetworkConnected = wiMaxInfo.isConnectedOrConnecting();
                }
                isNetAvailable = ( mobileNetworkConnecetd || wifiNetworkConnecetd || wiMaxNetworkConnected );
            }
        }
        return isNetAvailable;
    }

检查isNetAvailable的值在所有3个案例中都适用于我,也希望为你工作

注意:4G可用性将引入API级别8以后。