繁体   English   中英

如何使用Chrome网络蓝牙API初始化新设备配对?

[英]How to initiate a new device pairing using the Chrome web bluetooth API?

使用navigator.bluetooth.requestDevice() ,我可以使用本地OSX蓝牙配对访问已经设置了配对的蓝牙设备,但是即使它们的属性与我的通用查询匹配,也不会出现以前未配对的设备。 可用设备以Chrome模式显示,要求用户同意配对,但是显示的唯一设备是我已经配对过的设备。

我是不是在误解了这里的预期用例,还是通过Chrome与附近(以前没有配对)的设备建立连接?

文档: https : //webbluetoothcg.github.io/web-bluetooth/ (请参见示例2)

 function bluetoothConnect() { navigator.bluetooth.requestDevice({filters: [{services: ['generic_access']}]}) .then(device => {console.log(`Connected to: ${device.name}`)}) .catch(console.error); } 

首先,正如我们所说的,Mac OS X尚未完全实现。 目前仅发现和GATT服务器连接/断开连接。 请参阅https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md上的Chrome实施状态。 查看Chrome操作系统,Linux和Android M(Android Lollipop解决方法)。

关于您的特定问题,我相信附近的BLE设备不会广播generic_access ,但是可以找到它是因为您已经配对(缓存)了该设备。 例如,如果您的设备名为“ foo”,则可以转到https://googlechrome.github.io/samples/web-bluetooth/device-info.html并填写“ foo”作为设备名称,然后点击“获取蓝牙”设备信息”按钮。

我建议您也尝试通过https://googlechrome.github.io/samples/web-bluetooth/index.html尝试所有Web蓝牙示例。

为了补充其他答案,请注意Chrome的chrome://bluetooth-internals标签/工具。 该工具不仅可以列出可用的设备及其服务(除非您在optionalServicesfilters/services请求了服务,否则我认为您无法使用Web Bluetooth API进行操作)以及这些服务的特征。

在设备列表中,有一个“ 忘记”按钮,一旦您使用“ 检查”按钮连接到设备GATT服务器,该按钮便会激活。 如果需要端对端测试流,这应该可以使您完全解除配对并再次配对。

编辑:实际上,在对此进行了一些试验之后,即使使用“忘记”按钮后,设备仍然保持配对状态。 可能是Chrome中的错误,但是,配对设备的缓存似乎是针对每个配置文件的。 这意味着真正的答案是:

使用隐身模式,在此,配对流程将从每个新的隐身会话的一开始就启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM