var watcher = new BluetoothLEAdvertisementWatcher();
watcher.ScanningMode = BluetoothLEScanningMode.Active;
watcher.Received += OnAdvertisementReceived;
watcher.Start();
}
#region BLE
private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
if (items.Contains(eventArgs.Advertisement.LocalName) == false)
{
items.Add(eventArgs.Advertisement.LocalName);
}
}
我将此设置作为发现我的BLE设备(rfduino)的一种方式。有用。单击按钮时,它会在列表框中显示我的ble设备。但是,我在配对过程中需要帮助。
答案 0 :(得分:2)
我给出了示例代码,说明如何使用“ PairAsync”方法和“ PairingRequested”事件的事件处理程序。
public async Task Connect(BluetoothLEDevice leDevice, DevicePairingProtectionLevel pairingProtection)
{
try
{
if (leDevice != null)
{
DevicePairingKinds ceremoniesSelected = DevicePairingKinds.ConfirmOnly;
DeviceInformationCustomPairing customPairing = leDevice.DeviceInformation.Pairing.Custom;
customPairing.PairingRequested += CustomPairing_PairingRequested;
DevicePairingResult result = await customPairing.PairAsync(ceremoniesSelected, pairingProtection);
customPairing.PairingRequested -= CustomPairing_PairingRequested;
}
}
catch
{
}
}
private void CustomPairing_PairingRequested(DeviceInformationCustomPairing sender, DevicePairingRequestedEventArgs args)
{
try
{
string deviceID = args.DeviceInformation.Id;
switch (args.PairingKind)
{
case DevicePairingKinds.ConfirmOnly:
// Windows itself will pop the confirmation dialog as part of "consent" if this is running on Desktop or Mobile
// If this is an App for 'Windows IoT Core' where there is no Windows Consent UX, you may want to provide your own confirmation.
args.Accept();
Task.Factory.StartNew(new Action(async () =>
{
await Task.Delay(2000);
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(deviceID);
// Write your making connection related code here
}));
break;
}
}
catch
{
}
}