如何解决确定私有可解析的蓝牙LE地址
我已经编写了一个使用UWP类提供GATT-Server(即,我的笔记本电脑用作BLE外围设备)的应用程序。
我可以成功地进行广告,连接和使用,但是我无法弄清楚的一件事:如何找到中央正在查看的当前可解析私人地址?
我的蓝牙适配器似乎具有内部地址9C:B6:D0:XX:YY:ZZ
。我可以通过多种方式找到并确认该地址:
-
BluetoothAdapter.GetDefaultAsync().AsTask().Result.BluetoothAddress.ToString("X12")
在Visual Studio的直接窗口中返回"9CB6D0XXYYZZ"
作为结果。 - 如果我在任何读取请求处理程序中添加断点,则
GattReadRequestedEventArgs.Session.DeviceId.Id
是"BluetoothLE#BluetoothLE9c:b6:d0:xx:yy:zz-gg:hh:ii:jj:kk:ll"
。 -
Device Manager > Bluetooth > {Device Name} > Properties > Advanced
显示9c:b6:d0:xx:yy:zz
。
我正在使用Android的“ nRF Connect”应用程序连接到我的人造外设并利用其BLE服务和特性进行操作,并且效果很好。但是,nRF Connect显示的地址是一个不同的地址,例如“ 5F:69:8A:DD:C9:ED”。每当我重新启动GATT服务器时,它也会更改。
我想这是一个私有的可解析地址,出于隐私原因用于隐藏实际适配器的地址。但是我似乎找不到从GATT服务器中的代码确定该地址的方法。我只知道它既不是BluetoothAdapter.BluetoothAddress,也不是GattReadRequestedEventArgs.Session.DeviceId.Id
的一部分,因为它们都只包含永不改变的内部地址,而上面提到的gg:hh:ii:jj:kk:ll
部分又是另一个地址(但是而不是一个nRF Connect显示的内容。)
解决方法
确定私有可解析的蓝牙LE地址
用于API地址和专用轮换地址。 API返回一个静态地址,并且广告包含专用的旋转地址。 UWP中没有办法获得私人轮换地址,这是设计使然。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。