5

मैं बीकन स्कैनिंग प्रोग्राम को लागू करने की कोशिश कर रहा था, और मैं एंड्रॉइड बीएलई सेवाओं को आईओएस "didRangeBeacons" विधि के समान व्यवहार करना चाहता हूं, यानी, इसे हर एक सेकंड कहा जाना चाहिए। लेकिन एंड्रॉइड में ऐसी कोई विधि नहीं है। लेकिन एंड्रॉइड में "leScanCallback" विधि है जिसे एक सेकंड से कम की स्कैन अवधि के साथ अक्सर बुलाया जाता है। तो क्या कोई तरीका है कि मैं अपनी कार्यक्षमता को leScanCallback विधि में कार्यान्वित कर सकता हूं और स्कैन अवधि अंतराल को 1 सेकंड तक बढ़ा सकता हूं, ताकि यह आईओएस की "didRangeBeacons" विधि के समान व्यवहार करे।एंड्रॉइड में बीएलई उपकरणों के लिए स्कैन अवधि कैसे बढ़ाएं?

* यह भी बीकन को लगातार स्कैन करने और एंड्रॉइड में स्कैन अंतराल बढ़ाने के लिए खराब प्रोग्रामिंग होगा?

अग्रिम धन्यवाद

उत्तर

8

में यह महत्वपूर्ण है समझने के लिए एंड्रॉयड में कोई मूल iBeacon समर्थन करता है। एंड्रॉइड leScanCallback विधि आईओएस didRangeBeacons विधि के बराबर नहीं है।

leScanCallback विधि आपको हर बार एक ब्लूटूथ डिवाइस से विज्ञापन पैकेट दिखाई देने पर कॉलबैक देता है (विज्ञापनों में कनेक्ट करने योग्य बिट सेट वाले डिवाइस केवल कॉलबैक दिए जाते हैं जब तक कि आप इसे बंद नहीं करते हैं, स्कैनिंग पुनरारंभ करें)। जब तक आप टाइमर पर स्कैनिंग को रोकते और पुनरारंभ नहीं करते हैं, तब तक कोई स्कैन अवधि नहीं होती है, और आप कॉलबैक प्राप्त करते हैं जैसे पैकेट आते हैं। यह एक बार कई बार हो सकता है।

ओपन सोर्स Android iBeacon Library लिखते समय, मुझे didRangeBeaconsInRegion कॉलबैक बनाने के लिए स्क्रैच से सभी कार्यक्षमताएं बनाना पड़ा जो आईओएस में जो भी है उसके बराबर था। ऐसा करने के लिए, लाइब्रेरी एक बार एक बार स्कैनिंग रोकता है और चक्र में देखे गए सभी आईबीकॉन की सूची को बफर करता है, केवल चक्र के अंत में दृश्यमान iBeacons की सूची के साथ कॉलबैक को कॉल करता है। यहां पर कई अन्य जटिलताओं पर चर्चा नहीं की गई है।

The code is free आपके लिए समीक्षा और संशोधित करने के लिए, इसलिए यदि आप अपना खुद का रोल करना चाहते हैं तो मैं आपको ऐसा करने के लिए प्रोत्साहित करता हूं।

+0

धन्यवाद डेविड। मैं आपके द्वारा लिखे गए कोड की समीक्षा कर रहा था। यह वास्तव में अच्छा काम है। और अब मुझे स्कैनिंग के पीछे तर्क मिला है। :) – HeadOnn

+0

अगर हम केवल तभी स्कैन करना चाहते हैं जब एप्लिकेशन अग्रभूमि में है और पृष्ठभूमि में नहीं है। बेहतर क्या होगा? अंतराल में स्कैनिंग या अंतराल में स्कैनिंग (1 सेकंड कहें) –

+1

आपको अंतराल पर स्कैन करना होगा। कई एंड्रॉइड डिवाइसों में ब्लूटूथ हार्डवेयर परत होती है जो प्रति स्कैन प्रति पता चला हार्डवेयर डिवाइस केवल एक ही पहचान कॉलबैक प्रदान करती है। उसी हार्डवेयर डिवाइस के लिए दूसरी कॉलबैक प्राप्त करने के लिए रोकना और पुनरारंभ करना आवश्यक है। – davidgyoung

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