2012-12-18 9 views
25

次のコードを使用して、WiFi信号レベルをdBmで取得できます。AndroidのWiFi信号強度を取得する

for (ScanResult result : wifiScanResultList) { 

    int signalLevel = result.level; 
} 

これは負の値を示します。既定のシステムのWiFi設定が表示され、接続されたWiFiネットワークをクリックすると、信号の強度として「良」または「不良」が表示されます。これらの負の値を「良い」信号強度または「悪い」信号強度としてフィルタリングできる範囲は何ですか?

+3

がほとんどのためにdBmのではないですフェア

dBmの-60パートネガティブ? –

+0

はい、そうです。私が必要とするのは、自分のWiFi対応Androidアプリに適用できる標準的な範囲です。実際のデバイスで接続されたWiFiネットワークをクリックすると、信号強度として「良い」が表示されます。私は彼らがそれを「良い」強さとしてどのように測定しているか知りたい。返信いただきありがとうございます。 – AnujAroshA

+0

これはあなたの質問に対する答えです:http://androidxref.com/4.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java#103 –

答えて

8

はい、正確です。これは、受信信号電力のdBm値がどのように表されるかです。 Here are Wikipediaでの詳細。

-100最低値(すべての信号なし)を意味し、0は非常に良好な信号(100%)を意味

+0

0は100%ではありません。受信信号強度は0dBmを超えることができます。 > = 51dBmは、通常100%を意味します。 – Thomas

+0

@トーマス何かナンセンス。この声明を出す前に、リンクされたWikipediaのページをチェックしたり、自分で調べてみたりしましたか? –

+0

あなたは私が無線システムについてもう少し知っているようですが、それ以外の場合は「非センス」と書かれていないでしょう。あなたのWikipediaのリンクは、ラジオ局の送信電力だけをリストしています。 -100は最低値ではありません。例えば、GSMは-100 dBm以下で動作します。 – Thomas

37

その古いポストが、これは、誰かを助けるかもしれない...

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
int numberOfLevels = 5; 
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels); 

ドキュメント:public static int calculateSignalLevel (int rssi, int numLevels)

+0

信号がどのように知っているかは非常に強力です。つまり、3、4の場合、文字列は –

+0

です。docsでは、コンテキストとしてアプリケーションコンテキストが必要だと言います。 – chksr

8
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 

// Level of a Scan Result 
List<ScanResult> wifiList = wifiManager.getScanResults(); 
for (ScanResult scanResult : wifiList) { 
    int level = WifiManager.calculateSignalLevel(scanResult.level, 5); 
    System.out.println("Level is " + level + " out of 5"); 
} 

// Level of current connection 
int rssi = wifiManager.getConnectionInfo().getRssi(); 
int level = WifiManager.calculateSignalLevel(rssi, 5); 
System.out.println("Level is " + level + " out of 5"); 
+0

はチャンピオンのように動作します:D –

16

受信したワイヤレス信号電力のdBm値がどのように表されているかを確認してください。

エクセレント> -50 dBmの

グッド-50 -60 -70弱い<

dBmの-70 dBmの

関連する問題