11

特定のデバイスが4Gネットワ​​ークのハードウェアをサポートしているかどうかを確認したい。

問題を詳しく説明します...
アプリケーションには、ユーザーが選択を行い、選択したネットワークでのみアプリケーションを実行できるようにする設定ページがあります。例えば。ユーザーは、アプリがWiFiネットワークでのみ実行されるか3Gネットワ​​ークでのみ実行されるかなどを選択できます。

WiFi、2G、3G 4Gなどのすべてのネットワークにチェックボックス設定があります。デバイスが4Gネットワ​​ークをサポートしていない場合は、4G選択チェックボックスを非表示にします。
残りのすべての機能が完了しました。デバイスが4Gをサポートしているかどうかを検出する方法というこの問題に私は驚いていますか?デバイスで4Gのハードウェアサポートを検出したいのですが、4G接続などが接続されていないことに
注意してください。 どんな助けでも大歓迎です。

4

3 に答える 3

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用だと思います。自分で確認してください。

于 2011-11-01T11:30:43.413 に答える
1

これはうまくいくかもしれません。WiMax4gをチェックする必要があります。

    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();
    }
}

もう少し明確にするためにこれを見てみてください。

于 2011-10-25T14:04:14.947 に答える
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以降が導入されます。

于 2012-01-07T04:53:11.190 に答える