void StartScan() { _scanning = true; try { _scanner.StartScan(_scanFilters, _scanSettings, _scanCallback); _scanner.StartScan(_scanFilters, _scanSettingsBatch, _scanCallbackBatch); } catch (Exception err) { _logger.LogError(err, "StartScan Crashed"); } }
public void OnAnimationStart(Animator animation) { LbStatus.Text = "Se cauta dispozitive..."; if (_bluetoothManager == null) { return; } _bluetoothAdapter = _bluetoothManager.Adapter; if (!_bluetoothAdapter.IsEnabled) { StartActivityForResult(new Intent(BluetoothAdapter.ActionRequestEnable), 11); } else { BluetoothScanner = _bluetoothAdapter.BluetoothLeScanner; BluetoothScanner.StartScan(ScanCallback); handler.PostDelayed(() => { //mScanning = false; if (!isDeviceConnected) { Log.Error("ScanTest", "Timeout"); BluetoothScanner.StopScan(ScanCallback); LbStatus.Text = "Nu s-au gasit dispozitive"; _animationView.CancelAnimation(); } }, SCAN_PERIOD); //_scanButton.Enabled = false; _dataContainer.Visibility = ViewStates.Gone; } }
public void StartScan() { if (!SupportsBluetooth()) { throw new BluetoothUnsupportedException("This device does not support Bluetooth."); } if (!IsReadyToUseBluetooth()) { throw new BluetoothTurnedOffException("Bluetooth service on this device is turned off."); } if (IsScanning) { return; } if (OS_VER < BuildVersionCodes.Lollipop) { #pragma warning disable CS0618 // Type or member is obsolete _btAdapter.StartLeScan(_scanCallbackOld); #pragma warning restore CS0618 // Type or member is obsolete } else { if (_bleScanner == null) { _bleScanner = _btAdapter.BluetoothLeScanner; } _bleScanner.StartScan(_scanCallbackNew); } IsScanning = true; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); // Start scanning for the beacon we want to write a value to var scanModeBuilder = new ScanSettings.Builder(); scanModeBuilder.SetScanMode(ScanMode.LowLatency); var deviceAddressFilterBuilder = new ScanFilter.Builder(); deviceAddressFilterBuilder.SetDeviceAddress(_MyDeviceAddress); _Manager = (BluetoothManager)GetSystemService("bluetooth"); _Adapter = _Manager.Adapter; _Scanner = _Adapter.BluetoothLeScanner; _ScanCallback = new BleScanCallback(this); _GattCallback = new BleGattCallback(this); _LogTextView = FindViewById <TextView>(Resource.Id.logTextView); _Scanner.StartScan( new List <ScanFilter> { deviceAddressFilterBuilder.Build() }, scanModeBuilder.Build(), _ScanCallback); _LogTextView.Text = "Started scanning...."; }
public ScanEventSource() { ScanResults = Observable.FromEvent<ScanResult>(h => OnDeviceDetected += h, h => OnDeviceDetected -= h); var appContext = Application.Context; var builder = new ScanSettings.Builder(); builder.SetReportDelay(0); builder.SetScanMode(ScanMode.LowLatency); var manager = (BluetoothManager)appContext.GetSystemService(Context.BluetoothService); var adapter = manager.Adapter; bluetoothLeScanner = adapter.BluetoothLeScanner; var simpleScanCallback = new SimpleScanCallback(result => { var payload = result.ScanRecord.GetBytes(); var majorId = payload[26]; if (payload[5] == 76 && majorId == Constants.MajorId) { var txPower = 255 - payload[29]; var minorId = (payload[27] << 8) + payload[28]; var deviceId = new DeviceIdentifier(new Guid(), majorId, minorId); var data = new ScanResult(deviceId, result.Rssi, txPower); OnDeviceDetected?.Invoke(data); } }); // taken from https://www.pubnub.com/blog/2015-04-15-build-android-beacon-ibeacon-detector/ , but not detecting our beacons //bluetoothLeScanner.StartScan(new List<ScanFilter> {CreateScanFilter()}, CreateScanSettings(), simpleScanCallback); bluetoothLeScanner.StartScan(simpleScanCallback); }
public void StartScan() { if (IsScanningBeacon) { return; } _bleScanner.StartScan(_scanCallback); IsScanningBeacon = true; }
public async Task BeginScanningForDevices() { UpdateTextView("BluetoothLEManager: Starting a scan for devices."); _isScanning = true; _discoveredDevices = new List <BluetoothDevice>(); _scanner.StartScan(_scannerCallback); await Task.Delay(10000); StopScanningForDevices(); }
private void Scan() { if (_bluetoothManager.Adapter.State != State.Disconnecting) { Console.WriteLine("StartScan"); _textView.Text = string.Empty; _bluetoothLeScanner.StartScan(Scanner.Instance); _handler.PostDelayed(() => { Console.WriteLine("StopScan"); _bluetoothLeScanner.StopScan(Scanner.Instance); }, 10000); } }
internal BluetoothLEScan(BluetoothLEScanOptions options, BluetoothLeScanner scanner) { _options = options; if (options != null) { _filters = options.Filters; } //var settings = new ScanSettings.Builder().SetScanMode(ScanMode.LowLatency).Build(); _callback = new Callback(this); _scanner = scanner; scanner.StartScan(_callback); Active = true; }
public void Scanner() { bluetoothLeScanner = mBluetoothAdapter.BluetoothLeScanner; mScanning = true; /* * Handler mHandler = new Handler(); * mHandler.PostDelayed(new Action(delegate { * mScanning = false; * bluetoothLeScanner.StopScan(this); * if (ScanResultEvent != null) { * ScanResultEvent(mLeDevices); * } * }), SCAN_PERIOD); */ bluetoothLeScanner.StartScan(this); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); // Bluetooth Low Energyがサポートされているかのチェック。 if (!PackageManager.HasSystemFeature(Android.Content.PM.PackageManager.FeatureBluetoothLe)) { Toast.MakeText(this, Resource.String.ble_not_supported, ToastLength.Short).Show(); Finish(); } // BluetoothManager,BluetoothAdapter,BluetoothLeScannerをインスタンス化。 BluetoothManager manager = (BluetoothManager)GetSystemService(BluetoothService); BluetoothAdapter adapter = manager.Adapter; scanner = adapter.BluetoothLeScanner; // BluetoothのAdapterが取得できているか=Bluetoothがサポートされているかのチェック。 if (adapter == null) { Toast.MakeText(this, Resource.String.error_bluetooth_not_supported, ToastLength.Short).Show(); Finish(); return; } var scanButton = FindViewById<Button>(Resource.Id.scanButton); scanButton.Click += (sender, e) => { bleDevices = new List<BleDeviceData>(); scanCallback.ScanResultEvent += ScanCallback_ScanResultEvent; scanner.StartScan(scanCallback); Thread.Sleep(5000); scanner.StopScan(scanCallback); }; listView = FindViewById<ListView>(Resource.Id.deviceList); listView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => { var intent = new Intent(this, typeof(ServiceListActivity)); var sendData = new string[] { bleDevices[e.Position].Name, bleDevices[e.Position].Id }; intent.PutExtra("data", sendData); StartActivity(intent); }; }
public void StartScan() { if (IsScanning) { return; } if (OS_VER < BuildVersionCodes.Lollipop) { _scanCallbackOld.DetectedBeaconDict = new Dictionary <string, iBeacon>(); _btAdapter.StartLeScan(_scanCallbackOld); } else { _scanCallbackNew.DetectedBeaconDict = new Dictionary <string, iBeacon>(); _bleScanner.StartScan(_scanCallbackNew); } IsScanning = true; }
void IAdvertiseAndDiscoverBluetoothDevice.Discover() { try { Analytics.TrackEvent(Build.Model + " Discover method called."); List <ScanFilter> filters = new List <ScanFilter>(); ScanFilter filter = new ScanFilter.Builder() .SetServiceUuid(new ParcelUuid(MY_UUID)) .Build(); filters.Add(filter); //ScanSettings settings = new ScanSettings.Builder() // .SetScanMode(Android.Bluetooth.LE.ScanMode.LowLatency) // .Build(); ScanSettings.Builder builder = new ScanSettings.Builder(); builder.SetScanMode(Android.Bluetooth.LE.ScanMode.LowLatency); if (Build.VERSION.SdkInt >= BuildVersionCodes.M /* Marshmallow */) { builder.SetMatchMode(BluetoothScanMatchMode.Aggressive); builder.SetNumOfMatches((int)BluetoothScanMatchNumber.MaxAdvertisement); builder.SetCallbackType(ScanCallbackType.AllMatches); } var settings = builder.Build(); myScanCallback = new MyScanCallback(); bluetoothLeScanner = BluetoothAdapter.DefaultAdapter.BluetoothLeScanner; bluetoothLeScanner.StartScan(filters, settings, myScanCallback); } catch (System.Exception ex) { Analytics.TrackEvent(Build.Model + " Something went wrong in Discover method."); } }
public async void StartScanning() { if (IsScanning) { return; } IsScanning = true; // TODO: Handle power on state. if (_sdkInt >= Android.OS.BuildVersionCodes.Lollipop) // 21 { _bleScanner = _adapter.BluetoothLeScanner; _scanCallback = new OWBLE_ScanCallback(this); var scanFilters = new List <ScanFilter>(); var scanSettingsBuilder = new ScanSettings.Builder(); var scanFilterBuilder = new ScanFilter.Builder(); scanFilterBuilder.SetServiceUuid(OWBoard.ServiceUUID.ToParcelUuid()); scanFilters.Add(scanFilterBuilder.Build()); _bleScanner.StartScan(scanFilters, scanSettingsBuilder.Build(), _scanCallback); } else if (_sdkInt >= Android.OS.BuildVersionCodes.JellyBeanMr2) // 18 { _leScanCallback = new OWBLE_LeScanCallback(this); #pragma warning disable 0618 _adapter.StartLeScan(new Java.Util.UUID[] { OWBoard.ServiceUUID.ToUUID() }, _leScanCallback); #pragma warning restore 0618 } else { throw new NotImplementedException("Can't run bluetooth scans on device lower than Android 4.3"); } await Task.Delay(15 * 1000); StopScanning(); }
public Task <IEnumerable <WaterBoilerMatDevice> > ScanAsync(int timeoutMilliseconds) { logger.Log($"Call ScanAsync({timeoutMilliseconds})", Category.Debug, Priority.Medium); var tcs = new TaskCompletionSource <IEnumerable <WaterBoilerMatDevice> >(); // check if BluetoothLE APIs are available if (Android.App.Application.Context.PackageManager.HasSystemFeature(Android.Content.PM.PackageManager.FeatureBluetoothLe) != true || leScanner == null) { logger.Log($"BluetoothLE APIs are not available", Category.Warn, Priority.High); return(Task.FromException <IEnumerable <WaterBoilerMatDevice> >(new BluetoothLEException("BluetoothLE APIs are not available"))); } var result = new List <BluetoothDevice>(); var scanCallback = new LE.ScanCallback((device, rssi, record) => { if (result.Any(D => D.Address.Equals(device.Address))) { return; } result.Add(device); }); // Start the Enumeration leScanner.StartScan(scanCallback); logger.Log($"Start the BluetoothLE device Enumeration", Category.Info, Priority.High); handler.PostDelayed(() => { leScanner.StopScan(scanCallback); logger.Log($"Stop the BluetoothLE device Enumeration. Found {result.Count} devices.", Category.Info, Priority.High); tcs.SetResult(result.Where(D => WaterBoilerMatDevice.IsNavienDevice(D.Address)) .Select(D => new WaterBoilerMatDeviceAndroid(D, bluetoothAdapter))); }, timeoutMilliseconds); return(tcs.Task); }
public Task <IList <IBLEDevice> > ScanForDevicesAsync() { _scanForDevicesTCS = new TaskCompletionSource <IList <IBLEDevice> >(); _discoveredDevices = new List <IBLEDevice>(); IsScanning = true; _adapter.StartScan(this); Task.Run(async() => { await Task.Delay((int)ScanTimeout.TotalMilliseconds); if (IsScanning) { IsScanning = false; _adapter.StopScan(this); _scanForDevicesTCS.SetResult(_discoveredDevices); } }); return(_scanForDevicesTCS.Task); }
public bool StartScanning() { if (isScanning) { return(true); } if (IsEnabled) { // Stops scanning after a pre-defined scan period. //scanHandler.PostDelayed(new Runnable(() => //{ // isScanning = false; // scanner.StopScan(scanCallback); //}), 10000); isScanning = true; ScanFilter.Builder builder = new ScanFilter.Builder(); builder.SetServiceUuid(DottedUUID); ScanSettings.Builder sBuilder = new ScanSettings.Builder(); sBuilder.SetScanMode(Android.Bluetooth.LE.ScanMode.LowPower); scanner.StartScan(new List <ScanFilter> { builder.Build() }, sBuilder.Build(), scanCallback); return(true); } else { isScanning = false; scanner.StopScan(scanCallback); return(false); } }
public void StartScan() { bluetoothLeScanner.StartScan(scanCallback); }
private void ScanDevices() { _scanner = _bluetoothAdapter.BluetoothLeScanner; _scanner.StartScan(_scanCallback); }