2010-12-07 13 views
6

मैं वाईफ़ाई कनेक्शन में सिग्नल शक्ति परिवर्तन का पता लगाने की कोशिश कर रहा हूं। मैं उलझन में हूं कि मुझे अपने ब्रॉडकास्ट रिसीवर में किस विधि का उपयोग करना चाहिए। GetConnectionInfo() और getScanResults() का उपयोग करने के बीच क्या अंतर है - जिससे मैं आरएसएसआई मान प्राप्त करने के लिए प्रासंगिक विधि का उपयोग कर सकता हूं?सिग्नल शक्ति परिवर्तनों का पता लगाने के लिए getConnectionInfo() और getScanResults() के बीच अंतर

उदाहरण के लिए: यदि मैं getConnectionInfo() का उपयोग करता हूं, तो बाद में मैं getRssi() का उपयोग करता हूं। या मैं getScanResults() और "स्तर" संपत्ति का उपयोग कर सकता हूं।

मैं टोस्ट का उपयोग करके अपने मूल्य प्रदर्शित करता हूं और यह हमेशा समान मान नहीं दिखाता है। जब वाईफाई कॉन खो जाता है, getConnectionInfo()। GetRssi() -200 दिखाता है, जबकि परिणाम .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; 
    } 
} 

उत्तर

1

आप getScanResults() का उपयोग केवल यदि आप startScan() का उपयोग करें। एक स्कैन एसिंक्रोनस होता है, जब इसे पूरा किया जाता है तो SCAN_RESULTS_AVAILABLE_ACTION प्रसारण भेजता है। और, स्कैन परिणाम स्कैन पाता जो भी एक्सेस पॉइंट्स के लिए होंगे, जिसमें आप किसी भी चीज़ से जुड़े हुए हैं, उससे जुड़े एक्सेस पॉइंट्स को शामिल कर सकते हैं।

+0

* कृपया कोड स्निपेट देखें * वहां मैं वर्तमान कनेक्शन से आरएसएसआई मान का पता लगाने के लिए उन दो विधियों का उपयोग करता हूं। और हाँ, मैं startScan() का उपयोग करता हूं। ठीक है, तो इस मामले में getConnectionInfo() का उपयोग करने का अधिकार नहीं है। GetRssi()? आरएसएसआई_CHANGED_ACTION प्रसारण भेजने के बारे में क्या और फिर नया आरएसएसआई मूल्य प्राप्त करने के लिए intent.getIntExtra (WifiManager.EXTRA_NEW_RSSI, 0) का उपयोग करें? क्या यह भी SCAN_RESULTS_AVAILABLE_ACTION के समान मामला है, जो किसी भी पहुंच बिंदु पुनर्प्राप्त करता है? तो यह एक और एपी के आरएसएसआई मूल्य वापस दे सकता है जब तक कि मूल्य पिछले एक से अलग है? – springrolls

+0

एक पुस्तक के अनुसार मैंने अभी पढ़ा है, आरएसएसआई_CHANGED_ACTION कनेक्टेड वाईफाई नेटवर्क की वर्तमान आरएसएसआई देता है। तो अब मेरी समझ में, हम आरएसएसआई परिवर्तनों को प्रदर्शित करने के लिए तीन तरीकों में से एक का उपयोग कर सकते हैं। लेकिन प्रत्येक के लिए विशिष्ट स्थिति है: 1. यदि आप SCAN_RESULTS_AVAILABLE_ACTION (और इस प्रकार, startScan() का उपयोग करते हैं), getScanResults() का उपयोग करें और उस नेटवर्क के लिए "स्तर" प्रॉपर्टी पुनर्प्राप्त करें जिसे आप वर्तमान में कनेक्ट कर रहे हैं। 2. getConnectionInfo() का उपयोग करें। GetRssi() प्रत्येक एक्स सेकंड अपडेट किया गया। 3. या यदि आप आरएसएसआई_CHANGED_ACTION को प्रसारित करते हैं, तो EXTRA_NEW_RSSI का उपयोग करें - जो मेरे मामले में, आरएसएसआई परिवर्तनों का पता लगाने के लिए बेहतर सेवा करनी चाहिए। – springrolls

2

एक शब्द में, आरएसएसआई केवल आपके डिवाइस और एक्सेस पॉइंट के बीच उपलब्ध है कि आप इससे जुड़े हुए हैं। (आरएसएसआई एक एक्सेस पॉइंट के सिग्नल का स्तर है जिसे आप उससे जुड़े हुए हैं)

लेकिन जब आप रेंज वाईफ़ाई एक्सेस पॉइंट्स में सभी का स्तर प्राप्त करना चाहते हैं तो आपको स्टार्टस्कैन का उपयोग करना चाहिए और स्कैनरसेट प्राप्त करना चाहिए और प्रत्येक के लिए स्तर की संपत्ति प्राप्त करना चाहिए रेंज वाईफाई एक्सेस पॉइंट में।

क्या यह उपयोगी है?

संबंधित मुद्दे