2012-12-18 40 views
25

Tôi có thể nhận được mức tín hiệu WiFi bằng dBm sử dụng mã sau đây.Nhận cường độ tín hiệu Wi-Fi trong Android

for (ScanResult result : wifiScanResultList) { 

    int signalLevel = result.level; 
} 

Nó mang lại giá trị âm. Khi chúng tôi thấy cài đặt Wi-Fi hệ thống mặc định và được nhấp vào mạng Wi-Fi được kết nối, nó cung cấp "Tốt" hoặc "Xấu" làm cường độ tín hiệu. Phạm vi mà chúng ta có thể lọc những giá trị âm là cường độ tín hiệu "Tốt" hoặc cường độ tín hiệu "Xấu" là bao nhiêu?

+3

Không phải là dBm cho hầu hết một phần tiêu cực? –

+0

Vâng, đó là sự thật. Những gì tôi cần là phạm vi tiêu chuẩn mà tôi có thể áp dụng cho ứng dụng Android xử lý WiFi của riêng tôi. Khi tôi nhấp vào mạng WiFi được kết nối trên một thiết bị thực, nó mang lại cho tôi "Tốt" là cường độ tín hiệu. Tôi muốn biết làm thế nào họ đo lường nó như là một sức mạnh "Tốt". Cảm ơn vi đa trả lơi. – AnujAroshA

+0

Đây là câu trả lời cho câu hỏi của bạn: http://androidxref.com/4.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java#103 –

Trả lời

8

Có, chính xác. Đây là cách các giá trị dBm cho công suất tín hiệu nhận được được biểu diễn. Here are một số chi tiết tại Wikipedia.

-100 nghĩa là giá trị thấp nhất (không có tín hiệu gì cả), và 0 có nghĩa là tín hiệu rất tốt (100%)

+0

0 không phải là 100% phần trăm. Cường độ tín hiệu nhận được có thể lớn hơn 0 dBm. > = -51 dBm thường có nghĩa là 100%. – Thomas

+0

@Thomas thật là vô nghĩa. Bạn thậm chí đã kiểm tra trang Wikipedia được liên kết hay cố tự mình nghiên cứu trước khi đưa ra tuyên bố này? –

+0

Unlinke bạn tôi dường như biết một chút về hệ thống không dây có vẻ như, nếu không bạn sẽ không có văn bản "không có ý nghĩa". Liên kết Wikipedia của bạn chỉ liệt kê sức mạnh truyền của các đài phát thanh và vân vân. Ngoài ra -100 không phải là giá trị thấp nhất ... GSM ví dụ vẫn hoạt động dưới -100 dBm. – Thomas

37

nó một bài cũ nhưng điều này có thể giúp ai đó ...

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

Tài liệu : public static int calculateSignalLevel (int rssi, int numLevels)

+0

cách biết tín hiệu mạnh mẽ, rất mạnh, tức là nếu chúng tôi nhận được 3, 4 thì chú thích chuỗi –

+0

là gì: tài liệu nói rằng bạn cần bối cảnh ứng dụng dưới dạng ngữ cảnh! – 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

hoạt động như một nhà vô địch: D –

16

Vui lòng kiểm tra giá trị dBm của tín hiệu không dây nhận được.

Tuyệt vời> -50 dBm

Tốt -50 đến -60 dBm

Hội chợ -60 đến -70 dBm

Yếu < -70 dBm

Các vấn đề liên quan