6

モバイルデバイスでインターネットのネットワーク強度を表示したい。

これで、wifi からの接続を確認できるか、以下のコードを使用していないかを確認できますが、さらにネットワークの信号強度が必要です。追加する必要があるコードを教えてください。

ありがとう!

ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager
                .getActiveNetworkInfo();
        NetworkInfo mobNetInfo = connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);



        TextView netStatus = (TextView) findViewById(R.id.netStatus);
        if (activeNetInfo != null) {
            netStatus.setText(" Connection Status - Connected "+activeNetInfo.getTypeName());
        } else if (mobNetInfo != null) {
            netStatus.setText(" Connection Status - Connected "+mobNetInfo.getTypeName());
        } else {
            netStatus.setText(" Connection Status - Not Connected ");
        }
4

3 に答える 3

6

このコードを試してください:

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo Info = cm.getActiveNetworkInfo();
    if (Info == null || !Info.isConnectedOrConnecting()) {
        Log.i(TAG, "No connection");
    } else {
        int netType = Info.getType();
        int netSubtype = Info.getSubtype();

        if (netType == ConnectivityManager.TYPE_WIFI) {
            Log.i(TAG, "Wifi connection");
            WifiManager wifiManager = (WifiManager) getApplication().getSystemService(Context.WIFI_SERVICE);
            List<ScanResult> scanResult = wifiManager.getScanResults();
            for (int i = 0; i < scanResult.size(); i++) {
                Log.d("scanResult", "Speed of wifi"+scanResult.get(i).level);//The db level of signal 
            }


            // Need to get wifi strength
        } else if (netType == ConnectivityManager.TYPE_MOBILE) {
            Log.i(TAG, "GPRS/3G connection");
            // Need to get differentiate between 3G/GPRS
        }
    }
于 2012-12-12T07:00:17.167 に答える
2

取得するにはNetwork Strength

WifiManager wifiManager = (WifiManager) context
            .getSystemService(Context.WIFI_SERVICE);
netStatus.setText(getWifiSignalStrengthIndBm()+"");

public int getWifiSignalStrengthIndBm() {
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    return asu2dBm(wifiInfo.getRssi());
}
private int asu2dBm(int asu) {
        return (2 * asu) - 113;
    }
于 2012-12-12T07:14:33.060 に答える