2010-01-27 14 views
15

मुझे अपने एंड्रॉइड 2.1 फोन के साथ एक रिमोट डिवाइस पर ब्लूटूथ कनेक्शन की सिग्नल शक्ति जानने की जरूरत है। एसडीके से, मैं देख सकता हूं कि जब मैं रिमोट डिवाइस की खोज करता हूं तो मैं आरएसएसआई निर्धारित कर सकता हूं। लेकिन मैं नहीं देख सकता कि समय के साथ उस आरएसएसआई मूल्य को कैसे अपडेट किया जाए।एंड्रॉइड 2.1: मैं मौजूदा ब्लूटूथ कनेक्शन के आरएसएसआई मूल्य को कैसे मतदान करूं?

क्या कोई मुझे हाथ दे सकता है? धन्यवाद!!

+0

एंड्रॉयड परियोजना है, जो इस मुद्दे को संबोधित पर बग ट्रैकर में प्रवेश नहीं है। यदि आप इस मुद्दे पर कार्यवाही के लिए सदस्यता लेना चाहते हैं (और धक्का) तो आपको https://code.google.com/p/android/issues/detail?can=1&start=0&num=100&q=rssi&colspec=ID%20Type%20Status तारांकित करना चाहिए % 20 ऑनर% 20 सारांश% 20 स्टर्स और ग्रुपबी = और सॉर्ट = और आईडी = 6707 – Martze

उत्तर

16

एसडीके से आरएसएसआई प्राप्त करने का यही एकमात्र तरीका है। यह थोड़ा असुविधाजनक है, क्योंकि यह उपयोगी नहीं है अगर आप केवल युग्मित डिवाइस के सिग्नल की ताकत की निगरानी करना चाहते हैं।

हालांकि एक तरीका है, लेकिन एसडीके से बाहर है। आप एंड्रॉइड (और लगभग किसी भी लिनक्स सिस्टम) में अंतर्निहित ब्लूटूथ ढांचे, Bluez API द्वारा प्रदान किए गए कार्यों को मूल एपीआई (एनडीके के माध्यम से) का उपयोग कर सकते हैं। प्रश्न में कार्य hci_read_rssi()libbluetooth.so (ब्लूज़ स्टैक का हिस्सा) द्वारा प्रदान किया गया है। इसका उपयोग करने के तरीके सीखने के लिए, आप Hcidump tool sources (जो ब्लूज़ के साथ आता है) पर एक नज़र डालें। आप अपने फ़ंक्शन में जेएनआई रैपर कोड लिख सकते हैं, ताकि आप युग्मित डिवाइस की सिग्नल शक्ति प्राप्त कर सकें।

इस पद्धति का उपयोग करने के दो कमियां हैं:

  • RSSI मापने के लिए आप पहले रिमोट डिवाइस से कनेक्ट करना होगा, कम से कम निम्न स्तर पर (कोई प्रमाणीकरण इस कनेक्शन के लिए आवश्यकता होती है) और जारी करने के बाद कनेक्शन hci_read_rssi() पर कॉल करना। यह बीकन से आरएसएसआई को मापने से धीमा है, क्योंकि अन्य वायरलेस संचार का मतलब है (जीएसएम या वाईफ़ाई)
  • रिमोट ब्लूटूथ डिवाइस के लिए निम्न स्तर कनेक्शन एंड्रॉइड सुपरसुर अधिकारों पर आवश्यक है। तो लिखने और एप्लिकेशन के बारे में भूल जाएं जो गैर हैक किए गए फोन पर चलाया जा सकता है (वे आमतौर पर रूट रूट के साथ आते हैं, और कुछ मोटोरोला Droid/मील का पत्थर भी शून्य वारंटी के रूप में आते हैं यदि आप इसे हासिल करने का प्रयास करते हैं)।
+3

नोट, यह 4.2 पर काम नहीं करेगा, क्योंकि स्टैक ब्लूज़ से ब्रॉडकॉम में बदल गया है। –

+0

यह स्पष्ट नहीं है कि 'hci_read_rssi() 'आरएसएसआई प्राप्त करने के लिए सही कार्य है - इस उत्तर के अनुसार: http://stackoverflow.com/questions/30025139/bluez-bluetooth-api-and-distance-calibration-precision/ 30043437 # 30043437 – Pierz

1

दुर्भाग्य से नहीं Android 2.1, लेकिन स्तर 18 के लिए इस API पर एक नजर है (Android 4.3), जो आप मतदान कर सकता है के लिए:

BluetoothGatt.readRemoteRssi() 

RSSI एक जुड़ा रिमोट डिवाइस के लिए पढ़ें।

देखें Android docs here

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक भागों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। –