我正在使用C#在Visual Studio 2015中进行开发 运行Windows IoT核心的Raspberry PI 2设备。
对于我的应用程序,我需要配对和取消配对蓝牙设备 我可以获得配对/不配对/所有蓝牙设备的列表吗? 就像在蓝牙页面上可以看到的那样 内置管理网站(http://[deviceip]:8080/bluetooth.htm)
我找到了一个例子(https://github.com/Microsoft/Windows-universal-samples),
但这对我来说很重要!
目前我只想获得配对/未配对蓝牙设备的列表
答案 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
或项目属性窗口中的任何更新版本:
然后您就可以致电UnPairAsync
:
await i.Pairing.UnpairAsync();
旧版本不支持UnpairAsync。