title: Can't find BLE advertisement
body: <p>In my Xamarin.Forms app, I am writing native Android code to advertise a UUID and some test data for another device to scan and find it. I am running the app on tablet SM-T580. Here is my code:</p>
  
  <pre><code>var parameters = (new AdvertiseSettings.Builder())
                           .SetAdvertiseMode(AdvertiseMode.Balanced)
                           .SetConnectable(false)
                           .SetTimeout(0)
                           .SetTxPowerLevel(AdvertiseTx.PowerMedium).Build();
  
  AdvertiseData data = (new AdvertiseData.Builder()).AddServiceData(_applicationParcelUuid,
                                                                            System.Text.Encoding.ASCII.GetBytes("helloTest123"))
                                                    .Build();
  
  if (BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser != null)
  {
   BluetoothAdapter.DefaultAdapter.BluetoothLeAdvertiser.StartAdvertising(parameters, data, _customAvertiseCallback);
  }
  </code></pre>
  
  <p>In my <code>_customAvertiseCallback</code> the <code>OnStartSuccess</code> override gets called, so I think it should work. I try testing it by using the nRF Connect app on a Nexus 5 device, but I never see my device's advertisement on it.</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>I tried to add code that scans for BLE advertisement to see if I can pick it up myself. It finds other BLE advertisements from other devices, but not from my app. Here is my code for scanning, it's running on the same app:</p>
  
  <pre><code>public void StartBluetoothScanning()
  {
      if(_bleScanningInitialized)
      {
          return;
      }
  
      /**
          * Initialize BluetoothAdapter
          * Check the device has the hardware feature BLE
          * Then enable the hardware,
      */
      BluetoothManager bluetoothManager = (BluetoothManager)GetSystemService(Java.Lang.Class.FromType(typeof(BluetoothManager)));
      var bluetoothAdapter = bluetoothManager.Adapter;
      bool isBleSupported = bluetoothAdapter != null &amp;&amp; this.BaseContext.PackageManager.HasSystemFeature(PackageManager.FeatureBluetoothLe);
  
      if(!isBleSupported)
      {
          return;
      }
  
      /**
          * Register GATT update receiver
      */
  
      this.RegisterReceiver(_gattUpdateReceiver, new IntentFilter(BluetoothAdapter.ActionStateChanged));
  
      /**
      * Initialize Bluetooth service.
      */
  
      Intent gattServiceIntent = new Intent(BaseContext, typeof(BluetoothGattService));
      var componentName = BaseContext.StartService(gattServiceIntent);
      bool isBind = BaseContext.BindService(gattServiceIntent, _serviceConnection, Bind.AutoCreate);
  
      /**
      * Prepare for scanning
      */
  
      List&lt;ScanFilter&gt; scanFilters = new List&lt;ScanFilter&gt;();
      ScanFilter.Builder scanFilterBuilder = new ScanFilter.Builder();
      //scanFilterBuilder.SetServiceUuid(_applicationParcelUuid);
          scanFilters.Add(scanFilterBuilder.Build());
  
      ScanSettings.Builder scanSettingsBuilder = new ScanSettings.Builder();
          scanSettingsBuilder.SetScanMode(Android.Bluetooth.LE.ScanMode.Balanced);
  
      if (!bluetoothAdapter.IsEnabled)
      {
          bluetoothAdapter.Enable();
      }
  
      if (BluetoothAdapter.DefaultAdapter.BluetoothLeScanner != null)
      {
          BluetoothAdapter.DefaultAdapter.BluetoothLeScanner.StartScan(scanFilters, scanSettingsBuilder.Build(), _customScanCallback);
  
          _bleScanningInitialized = true;
      }
      else
      {
          if (ContextCompat.CheckSelfPermission(ApplicationContext,
              Android.Manifest.Permission.AccessFineLocation) != Permission.Granted)
          {
  
          }
      }
  }
  
  public class CustomScanCallback : ScanCallback
  {
      public override void OnScanResult([GeneratedEnum] ScanCallbackType callbackType, ScanResult result)
      {
          base.OnScanResult(callbackType, result);
  
          if (result.ScanRecord.ServiceUuids != null)
          {
              foreach (var x in result.ScanRecord.ServiceUuids)
              {
                  var id = x.Uuid.ToString();
  
                  // never true
                  if(id == _applicationGuid)
                  {
                      // Found my advertisement,
                  }
              }
          }
      }
  
      public override void OnScanFailed([GeneratedEnum] ScanFailure errorCode)
      {
          // never gets called
          base.OnScanFailed(errorCode);
      }
  }
  </code></pre>