2012-12-18 25 views
25

Aşağıdaki kodu kullanarak dBm'de WiFi sinyal seviyesini alabilirim.Android'de WiFi sinyal gücü alma

for (ScanResult result : wifiScanResultList) { 

    int signalLevel = result.level; 
} 

Negatif değer verir. Varsayılan sistem WiFi ayarını gördüğümüzde ve bağlı WiFi ağına tıklandığında, sinyal gücü olarak "İyi" veya "Kötü" değerini verir. Bu negatif değerleri "İyi" sinyal gücü veya "Kötü" sinyal gücü olarak filtreleyebilme aralığı nedir?

+3

çoğu için dBm değil mi bölüm negatif? –

+0

Evet, bu doğru. İhtiyacım olan şey, kendi WiFi işlem Android uygulamam için kullanabileceğim standart bir aralıktır. Bağlı bir ağ üzerinde gerçek bir cihaza tıkladığımda, Sinyal gücü olarak bana "İyi" verir. Bunu "İyi" bir güç olarak nasıl ölçtüklerini bilmek istiyorum. Cevap için teşekkürler. – AnujAroshA

+0

Sorunuzun yanıtı: http://androidxref.com/4.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java#103 –

cevap

8

Evet, tam olarak. Alınan sinyal gücü için dBm değerleri nasıl temsil edilir. Here are Vikipedi'deki bazı ayrıntılar. ...

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

Belgeleri

-100

en düşük değere (hiç sinyal) anlamına gelir ve 0 derece iyi bir sinyal (% 100)

+0

0,% 100 değil. Alınan sinyal gücü 0 dBm'nin üzerinde olabilir. > = -51 dBm genellikle% 100 anlamına gelir. – Thomas

+0

@Thomas ne saçmalık. Bağlantılı Wikipedia sayfasını kontrol ettiniz mi ya da bu ifadeyi yapmadan önce araştırmayı denediniz mi? –

+0

Bağlantıları çözme Kablosuz sistem hakkında biraz daha fazla şey biliyor gibiyim, aksi halde "anlamsız" yazmazdınız. Vikipedi bağlantınız sadece radyo istasyonlarının iletim gücünü ve benzerlerini listeler. Ayrıca -100 de en düşük değer değil ... GSM, hala -100 dBm'nin altında çalışıyor. – Thomas

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

bir şampiyon gibi çalışır: D –

16

alınan Kablosuz Sinyal gücü için dBm değerleri temsil nasıl kontrol edin.

dBm> -50 Mükemmel

İyi -50 -60 dBm

Fuarı -60 dBm -70 kadar

Zayıf < -70 dBm