2012-12-18 20 views
25

मैं निम्नलिखित कोड का उपयोग कर डीबीएम में वाईफाई सिग्नल लेवल प्राप्त कर सकता हूं।एंड्रॉइड में वाईफाई सिग्नल पावर प्राप्त करना

for (ScanResult result : wifiScanResultList) { 

    int signalLevel = result.level; 
} 

यह नकारात्मक मूल्य देता है। जब हम डिफ़ॉल्ट सिस्टम वाईफाई सेटिंग देखते हैं और कनेक्ट किए गए वाईफाई नेटवर्क पर क्लिक करते हैं, तो यह सिग्नल शक्ति के रूप में "अच्छा" या "खराब" देता है। सीमा क्या है कि हम उन नकारात्मक वैल को "अच्छी" सिग्नल शक्ति या "खराब" संकेत शक्ति के रूप में फ़िल्टर कर सकते हैं?

+3

अधिकांश के लिए dBm नहीं है भाग नकारात्मक? –

+0

हाँ, यह सच है। मुझे जो चाहिए वह एक मानक सीमा है जिसे मैं अपने स्वयं के वाईफाई हैंडलिंग एंड्रॉइड ऐप के लिए आवेदन कर सकता हूं। जब मैं एक वास्तविक डिवाइस पर कनेक्टेड वाईफाई नेटवर्क पर क्लिक करता हूं, तो यह मुझे सिग्नल शक्ति के रूप में "अच्छा" देता है। मैं जानना चाहता हूं कि वे इसे "अच्छी" ताकत के रूप में कैसे मापते हैं। उत्तर के लिए धन्यवाद। – AnujAroshA

+0

यह आपके प्रश्न का उत्तर है: http://androidxref.com/4.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java#103 –

उत्तर

8

हां, बिल्कुल। इस प्रकार प्राप्त सिग्नल पावर के लिए डीबीएम मानों का प्रतिनिधित्व किया जाता है। विकिपीडिया पर Here are कुछ विवरण।

-100 न्यूनतम मूल्य (कोई संकेत बिल्कुल) का अर्थ है, और 0 अत्यंत अच्छा संकेत (100%)

+0

0 100% प्रतिशत नहीं है। प्राप्त सिग्नल शक्ति 0 डीबीएम से ऊपर हो सकती है। > = -51 डीबीएम आमतौर पर 100% का मतलब है। – Thomas

+0

@ थॉमस क्या बकवास है। क्या आपने यह कथन बनाने से पहले लिंक किए गए विकिपीडिया पेज को भी जांच लिया है या इसे स्वयं शोधने का प्रयास किया है? –

+0

आपको अनलिंक करें मुझे ऐसा लगता है कि वायरलेस सिस्टम के बारे में कुछ और पता है, अन्यथा आपने "गैर-ज्ञान" लिखा होगा। आपका विकिपीडिया लिंक केवल रेडियो स्टेशनों की प्रेषण शक्ति को सूचीबद्ध करता है और इसी तरह। इसके अलावा -100 सबसे कम मूल्य नहीं है ... उदाहरण के लिए जीएसएम -100 डीबीएम से नीचे काम करता है। – 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

ध्यान क्या है: दस्तावेज़ कहते हैं कि आपको संदर्भ संदर्भ के रूप में संदर्भ संदर्भ की आवश्यकता है! – 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

एक चैंप की तरह काम करते हैं: डी –

16

कृपया जांच करें कैसे प्राप्त वायरलेस सिग्नल शक्ति के लिए dBm मूल्यों प्रतिनिधित्व कर रहे हैं।

बहुत बढ़िया> -50 dBm

अच्छा -50 -60 को dBm

मेले -60 -70 dBm को

कमजोर < -70 dBm