问题描述
我正在使用网络蓝牙连接到设备并读取名称和电池电量。 我让它工作了,但我想连接的设备是“未知或不受支持”,但我不知道为什么。在 requestDevice() 上,我只得到了我的 Iphone 和许多未知设备。
当我检查 chrome://bluetooth-internals
上的蓝牙设备时,我看到了一些已知设备,但不是我正在寻找的设备。我必须根据最新的 RSSI 猜测正确的设备。这对用户不友好。
有没有办法解决这个问题?或者有人可以解释为什么几乎所有设备都是未知或不受支持的。
我使用的是 Mac。 (如果这很重要)
更新@François Beaufort
nRF Connect 应用程序的屏幕截图。在应用程序中,设备有一个名称。我刚刚看到该设备在 bluetooth-internals
中也有一个名称,但它似乎并不总是宣传其名称。
它说 Device type: Google
但它不是来自 Google 的设备。
解决方法
您在蓝牙浏览器选择器中看到的名称是蓝牙设备的可读名称。蓝牙设备可能有两种不同的名称类型:一种是蓝牙设备通告的名称,另一种是蓝牙设备在其数据库中作为其低功耗蓝牙通用访问配置文件 (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 93 的“服务”列中的 chrome://bluetooth-internals/#devices
处看到广告服务。请参阅 https://chromiumdash.appspot.com/commit/49610d372d4d479f43e918d7bbf14537efd2769c