当前位置: 首页 > 知识库问答 >
问题:

UWP未配对配对蓝牙设备

斜高翰
2023-03-14

我正在Visual Studio 2015中用C语言为运行Windows IoT Core的Raspberry PI 2设备开发。

对于我的应用程序,我需要配对和取消配对蓝牙设备
我可以获得配对/未配对/所有蓝牙设备的列表吗<类似于内置管理网站的蓝牙页面(http://[设备IP]:8080/Bluetooth.htm)

我找到了一个例子(https://github.com/Microsoft/Windows-universal-samples)但是这对我来说太多了!

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

共有1个答案

简学文
2023-03-14

要查找设备(蓝牙或其他),您需要一个选择器,它可以告诉设备观察者要搜索的设备类型。

这些选择器基本上是识别设备类型的字符串,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}\"";

拥有此选择器后,需要使用DeviceInformation类上的方法创建DeviceWatcher类的实例:

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 };

请注意,在完成的处理程序中,我停止了DeviceWatcher
,因此它进入Stoped状态并可以再次启动。

拥有设备信息后,可以按如下方式配对:

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

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

然后您可以调用UnPairAsync:

await i.Pairing.UnpairAsync();

旧版本不支持UnpairAsync。

 类似资料:
  • 问题内容: 我正在创建一个应通过蓝牙连接到特定设备的应用程序。 无论设备是否已配对,我都希望我的应用程序与此设备连接。 现在我有这个 但是此功能仅连接到配对的设备。如果我的设备尚未配对,我想将其配对。不知道该怎么做。 有人可以给我任何建议吗? 问题答案: 首次请求权限。 然后使您的设备可发现: 然后创建一个 BroadcastReceiver 来监听系统中的动作: 并通过注册以下 Boardcas

  • 我在连接时遇到问题。起初它有效,而不是不起作用,除非我取消配对设备。我已经得到了所有可能发生的异常,套接字关闭,管道关闭,连接被拒绝,端口已经在使用中,等等。 我知道android 4.2之前版本的蓝牙存在问题(https://code.google.com/p/android/issues/detail?id=37725). 我在连接这些设备时遇到问题的设备: Htc one(Android4.

  • 我目前正在构建一个运行在Windows 10 IoT Core上的无头UWP应用程序。我需要能够通过蓝牙(RFCOMM)将移动设备连接到信息亭以获取数据。我需要能够从移动设备启动配对。 我已经尝试了所有UWP蓝牙示例应用程序,但主要是尝试设备枚举和配对C#示例-特别是场景9-自定义设备配对。我可以使用引脚成功配对到头部UWP应用程序,但我无法成功配对到无头UWP应用程序-当我尝试启动配对时,我要么

  • 嗨,我要开发一个应用程序,所以我有一个设备(服务器)与3个客户端。我做了所有的验证,打开蓝牙,找到设备,所有的工作都很好。但当我要连接一个设备时,我不知道会发生什么。 我正在使用下一个代码,当我单击一个我想连接它的设备时。我只有我的应用程序在母设备中。 这里我有一个问题,如果它没有配对会发生什么?如果我尝试连接,它会自动配对吗? 我的UUID是:“00001101-0000-1000-8000-0

  • 我正在尝试枚举所有与我的设备配对的蓝牙设备。在设置中,我可以查看配对的设备,但以下代码不返回任何项目: 我看过这篇和其他使用这种方法的帖子,但我似乎无法让它发挥作用。 我在Manifest.xml有以下权限: 此外,如果我将其中一个已配对的设备置于发现模式并进行扫描,则该设备会以已配对的状态返回。如果我检查: 从扫描中,它返回true。 我做错了什么或不理解什么?

  • deviceName String deviceId String