BDE cihazları bulma

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();
            }
        };