BDE cihazlarını bulmak için:
startScan()
yöntemidir. Bu yöntemde
Parametre olarak ScanCallback
değerini seçin.
Tarama sonuçları bu şekilde döndürüldüğünden, bu geri çağırmayı uygulamanız gerekir.
Tarama çok fazla pil harcadığından, aşağıdaki hususlara dikkat etmeniz gerekir:
kurallar:
- İstediğiniz cihazı bulur bulmaz taramayı durdurun.
- Taramayı hiçbir zaman döngüde yapmayın ve taramanız için her zaman bir zaman sınırı ayarlayın. Şu anda Önceden kullanılabilir olanlar aralık dışında kalmış ve tarama işlemine devam ediyor olabilir pili tüketir.
Aşağıdaki örnekte BDE uygulaması,
Kullanılabilir Bluetooth LE cihazlarını ve ekranını taramak için (DeviceScanActivity
)
bunları kullanıcıya bir listede göstermektir. Aşağıdaki snippet'te bir reklamverenin nasıl başlatılacağı ve
tara:
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); } }
Yalnızca belirli çevre birimi türlerini taramak için
startScan(List<ScanFilter>, ScanSettings, ScanCallback)
ScanFilter
listesini sunuyor
taramanın aradığı cihazları kısıtlayan nesneler ve
ScanSettings
taramayla ilgili parametreleri belirtir.
Aşağıdaki kod örneği,
ScanCallback
olan BDE tarama sonuçlarını
sunmak için kullanılan arayüzdür. Sonuçlar bulunduğunda,
DeviceScanActivity
uygulamasında bir liste bağdaştırıcısına eklenir ve
belirtir.
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(); } };