6

Wi-Fi 接続の信号強度の変化を検出しようとしています。BroadcastReceiver でどのメソッドを使用すればよいか混乱しています。getConnectionInfo() と getScanResults() の使用の違いは何ですか?そこから、関連するメソッドを使用して rssi 値を取得できますか?

例: getConnectionInfo() を使用すると、後で getRssi() を使用します。または、getScanResults() と「レベル」プロパティを使用することもできます。

Toast を使用してそれらの値を表示しますが、常に同じ値が表示されるとは限りません。wifi conn が失われると、getConnectionInfo().getRssi() は -200 を示しますが、result.level は以前の値を示したままです。

何かご意見は?ありがとう!

String netSSID = wifi.wifiMgr.getConnectionInfo().getSSID();
int netRSSI = wifi.wifiMgr.getConnectionInfo().getRssi();

List<ScanResult> results = wifi.wifiMgr.getScanResults();
for (ScanResult result : results) {
    if (result.SSID.equalsIgnoreCase(netSSID)) {
        anothernetRSSI = result.level;
    }
}
4

2 に答える 2

2

つまり、RSSI は、デバイスと接続しているアクセス ポイントの間でのみ使用できます。(RSSi は、接続しているアクセス ポイントの信号のレベルです)

ただし、範囲内のすべての wifi アクセス ポイントのレベルを取得する場合は、startScan を使用して scanResult を取得し、範囲内の wifi アクセス ポイントごとに level プロパティを取得する必要があります。

これは便利ですか?

于 2012-06-02T05:39:33.480 に答える
1

を使用するgetScanResults()場合にのみ使用しますstartScan()。スキャンは非同期であり、SCAN_RESULTS_AVAILABLE_ACTION完了時にブロードキャストを送信します。また、スキャン結果は、スキャンで検出されたアクセスポイントの結果になります。これには、接続しているアクセスポイント以外のアクセスポイントが含まれる場合があります(何かに接続している場合)。

于 2010-12-07T16:25:00.030 に答える