public void StopScan() { if (this.callbacks == null) { return; } this.Manager.Adapter.BluetoothLeScanner?.StopScan(this.callbacks); this.callbacks = null; }
public IObservable <IScanResult> Scan(ScanConfig config) => Observable.Create <ScanResult>(ob => { this.devices.Clear(); this.callbacks = new LollipopScanCallback(sr => { var scanResult = this.ToScanResult(sr.Device, sr.Rssi, new AdvertisementData(sr)); ob.OnNext(scanResult); }); var builder = new ScanSettings.Builder(); var scanMode = this.ToNative(config.ScanType); builder.SetScanMode(scanMode); var scanFilters = new List <ScanFilter>(); if (config.ServiceUuids != null && config.ServiceUuids.Count > 0) { foreach (var guid in config.ServiceUuids) { var uuid = guid.ToParcelUuid(); scanFilters.Add(new ScanFilter.Builder() .SetServiceUuid(uuid) .Build() ); } } if (config.AndroidUseScanBatching && this.Manager.Adapter.IsOffloadedScanBatchingSupported) { builder.SetReportDelay(100); } this.Manager.Adapter.BluetoothLeScanner.StartScan( scanFilters, builder.Build(), this.callbacks ); return(() => this.Manager.Adapter.BluetoothLeScanner?.StopScan(this.callbacks)); });