首页 > 解决方案 > 网络蓝牙:为什么大多数设备“未知或不受支持”?

问题描述

我正在使用网络蓝牙连接到设备并读取名称和电池电量。我让它工作了,但我想连接的设备是“未知或不受支持”,但我不知道为什么。在 requestDevice() 上,我只得到我的 Iphone 和许多未知设备。

当我检查蓝牙设备时,chrome://bluetooth-internals我看到了一些已知设备,但不是我正在寻找的设备。我必须根据最新的 RSSI 猜测正确的设备。这不是用户友好的。

有没有办法来解决这个问题?或者有人可以解释为什么几乎所有设备都是未知或不受支持的。

我正在使用 Mac。(如果这很重要)

更新@François Beaufort
在此处输入图像描述 nRF Connect 应用程序的屏幕截图。在应用程序中,设备有一个名称。我刚刚看到该设备也有一个名字bluetooth-internals,但它似乎并不总是宣传它的名字。

它说Device type: Google但它不是谷歌的设备。

标签: bluetoothbluetooth-gattweb-bluetooth

解决方案


您在蓝牙浏览器选择器中看到的名称是蓝牙设备的人类可读名称。蓝牙设备可能有两种不同的名称类型:一种是蓝牙设备宣传的,另一种是蓝牙设备在其数据库中作为其蓝牙低功耗通用访问配置文件 (GAP) 设备名称发布的。如果蓝牙设备同时具有这两种名称,您将获得 GAP 设备名称。

如果您看到"Unknown or Unsupported Device (12:34:56:78:9A:BC)",则表示蓝牙设备没有宣传其名称。为了减少蓝牙选择器中的噪音,我建议您使用其他过滤器,例如,"services"如果您发现您的蓝牙设备有一些广告。在https://web.dev/bluetooth/#services-filter查看完整的开发者文档

navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
.then(device => { /* … */ })
.catch(error => { console.error(error); });

更新:您可以chrome://bluetooth-internals/#devices在 Chrome 93 的“服务”列中看到广告服务。请参阅https://chromiumdash.appspot.com/commit/49610d372d4d479f43e918d7bbf14537efd2769c


推荐阅读