1

検出された Wifi 信号強度を測定できるアプリを作成しようとしています。

私はこのコードを使用しています

for (int i=0; i<size; i++){
   ScanResult scanresult = wifi.getScanResults().get(i);
   int rssi = scanresult.level;
}

私が聞きたいのは、結果は常に負であるため (-67、-88、-90 など)、値は何を意味するのですか? それは損失ですか、それとも受信信号レベルですか?

答えてくれてありがとう

4

3 に答える 3

2

のドキュメントを引用するlevel:

検出された信号レベル (dBm)。少なくとも、これらは TI ドライバーで使用される単位です。

古いalt.internet.wireless投稿を引用する:

負の値が表示される理由は、小さいが正の数を対数スケールで表しているためです。対数では、示された値は指数を表します。たとえば、log 10 スケールでは、-2 の値は 10 の -2 乗を表し、0.01 に等しくなります。同様に、負の dBm は、電力計算に負の指数を適用していることを意味します。0 dBm は 1 mW の電力に相当するため、-10 dBm は 0.1 mW に相当し、-20 dBm は 0.01 mW に相当します。弱い信号を 0.0000000001 mW ではなく -100 dBm と表す方がはるかに簡単で、計算によってはより便利です。

于 2013-09-07T13:28:23.257 に答える
2

次のように、WifiManager から calculateSignalLevel メソッドを使用できます。

int range = 5; //the range of integers you want to match the level (in this case it will be from 0 to 4)

int signalStrength = WifiManager.calculateSignalLevel(rssi, range);

このソースにアクセスできます。

于 2018-03-03T07:10:04.353 に答える