UWP Unpaired配对蓝牙设备

时间:2016-03-12 10:43:14

标签: bluetooth raspberry-pi uwp windows-10-iot-core

我正在使用C#在Visual Studio 2015中进行开发 运行Windows IoT核心的Raspberry PI 2设备。

对于我的应用程序,我需要配对和取消配对蓝牙设备 我可以获得配对/不配对/所有蓝牙设备的列表吗? 就像在蓝牙页面上可以看到的那样 内置管理网站(http://[deviceip]:8080/bluetooth.htm

我找到了一个例子(https://github.com/Microsoft/Windows-universal-samples),
但这对我来说很重要!

目前我只想获得配对/未配对蓝牙设备的列表

1 个答案:

答案 0 :(得分:3)

要查找设备(蓝牙或其他设备),您需要selector
可用于告诉DeviceWatcher要搜索的设备类型。

这些selectors基本上是识别设备类型的字符串,
UWP框架通过各种类的方法提供其中的一些。

//Gets all paired Bluetooth devices
var selector = BluetoothDevice.GetDeviceSelector();

//Gets all paired Bluetooth devices (same as above as far as I can tell)
var selector = BluetoothDevice.GetDeviceSelectorFromPairingState(true);

//Gets all unpaired Bluetooth devices
var selector = BluetoothDevice.GetDeviceSelectorFromPairingState(false);

来自GitHub上的样本:

  

目前,蓝牙API不提供选择器来获取所有设备   这是配对和非配对。通常你不需要这个   对于常见的场景,但是演示它很方便   各种样本场景。

为什么我们通常不需要这个超出我,但他们提供 一个选择器,可用于查找配对和非配对设备:

var selector = 
        "System.Devices.Aep.ProtocolId:=\"{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}\"";

获得此selector后,您需要创建一个实例 使用DeviceWatcher类上的方法的DeviceInformation类:

var deviceWatcher = DeviceInformation.CreateWatcher(selector, 
                       null, DeviceInformationKind.AssociationEndpoint);

最后,您必须连接事件,以便收到更改通知:

deviceWatcher.Added += (s, i) => { //Handle the new device };
deviceWatcher.Updated += (s, i) => { //Handle the updated device };
deviceWatcher.Removed += (s, i) => { //Handle the removed device };
deviceWatcher.Completed += (s, a) => { s.Stop(); };
deviceWatcher.Stopped += (s, a) => { //Handle here };

请注意,在Completed处理程序中,我停止了DeviceWatcher
所以它进入Stopped状态,可以再次启动。

获得DeviceInformation之后,您可以按如下方式配对:

var pairingResult = 
    await i.Pairing.PairAsync(DevicePairingProtectionLevel.Encryption);

至于取消配对,您需要确保您的项目定位Build 10586
或项目属性窗口中的任何更新版本:

Project Properites

然后您就可以致电UnPairAsync

await i.Pairing.UnpairAsync();

旧版本不支持UnpairAsync