BLE डिवाइसों को ढूंढने के लिए,
startScan()
तरीका. इस तरीके से
पैरामीटर के तौर पर ScanCallback
.
आपको इस कॉलबैक को लागू करना होगा, क्योंकि ऐसा करने से स्कैन के नतीजे ���िखते हैं.
स्कैन करने में बैटरी ज़्यादा खर्च होती है, इसलिए आपको इन बातों का ध्यान रखना चाहिए:
दिशा-निर्देश:
- अपनी पसंद का डिवाइस मिलते ही, स्कैन करना बंद कर दें.
- कभी भी लूप पर स्कैन न करें. साथ ही, स्कैन करने के लिए हमेशा एक समयसीमा सेट करें. ऐसा डिवाइस जो पहले उपलब्ध था, शायद सीमा से बाहर चला गया ह�� और स्कैन जारी रहा हो बैटरी को खत्म करता है.
यहां दिए गए उदाहरण में, BLE ऐप्लिकेशन एक गतिविधि देता है
(DeviceScanActivity
) उपलब्ध ब्लूटूथ LE डिवाइसों को स्कैन करने और डिसप्ले के लिए
उपयोगकर्ता के लिए उन्हें सूची में जोड़ा जा सकता है. नीचे दिए गए स्निपेट में बताया गया है कि
स्कैन:
Kotlin
private val bluetoothLeScanner = bluetoothAdapter.bluetoothLeScanner private var scanning = false private val handler = Handler() // Stops scanning after 10 seconds. private val SCAN_PERIOD: Long = 10000 private fun scanLeDevice() { if (!scanning) { // Stops scanning after a pre-defined scan period. handler.postDelayed({ scanning = false bluetoothLeScanner.stopScan(leScanCallback) }, SCAN_PERIOD) scanning = true bluetoothLeScanner.startScan(leScanCallback) } else { scanning = false bluetoothLeScanner.stopScan(leScanCallback) } }
Java
private BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); private boolean scanning; private Handler handler = new Handler(); // Stops scanning after 10 seconds. private static final long SCAN_PERIOD = 10000; private void scanLeDevice() { if (!scanning) { // Stops scanning after a predefined scan period. handler.postDelayed(new Runnable() { @Override public void run() { scanning = false; bluetoothLeScanner.stopScan(leScanCallback); } }, SCAN_PERIOD); scanning = true; bluetoothLeScanner.startScan(leScanCallback); } else { scanning = false; bluetoothLeScanner.stopScan(leScanCallback); } }
सिर्फ़ खास तरह के सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) को स्कैन करने के लिए,
startScan(List<ScanFilter>, ScanSettings, ScanCallback)
ScanFilter
की सूची दे रहे हैं
वे ऑब्जेक्ट जो उन डिवाइसों पर पाबंदी लगाते हैं जिन्हें स्कैन करने की ज़रूरत होती है. साथ ही,
ScanSettings
ऑब्जेक्ट है जो
स्कैन के बारे में पैरामीटर तय करता है.
नीचे दिया गया कोड सैंपल,
ScanCallback
यह BLE स्कैन के नतीजे देने के लिए इस्तेमाल किया गया इंटरफ़ेस है. नतीजे मिलने पर,
उन्हें DeviceScanActivity
में लिस्ट अडैप्टर में जोड़ा जाता है, ताकि
उपयोगकर्ता.
Kotlin
private val leDeviceListAdapter = LeDeviceListAdapter() // Device scan callback. private val leScanCallback: ScanCallback = object : ScanCallback() { override fun onScanResult(callbackType: Int, result: ScanResult) { super.onScanResult(callbackType, result) leDeviceListAdapter.addDevice(result.device) leDeviceListAdapter.notifyDataSetChanged() } }
Java
private LeDeviceListAdapter leDeviceListAdapter = new LeDeviceListAdapter(); // Device scan callback. private ScanCallback leScanCallback = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); leDeviceListAdapter.addDevice(result.getDevice()); leDeviceListAdapter.notifyDataSetChanged(); } };