我在 Linux 中观察到一些问题,而同一段代码在 Windows 上运行良好:
获取 RSSI 的代码:
BLE 似乎无法观看广告,因为没有事件到达。然而,相同的代码适用于 Windows。
此外,当我尝试使用 navigator.bluetooth.requestDevice() 重新连接时,它显示没有兼容的设备,并且重新扫描按钮不起作用。 点击此处查看图片
如有任何帮助,我们将不胜感激!
获取 RSSI 的代码:
let rssi;
function watchAdv() {
abortController = new AbortController();
device.addEventListener('advertisementreceived', handleAdvEvent);
console.log("watching adv");
device.watchAdvertisements({ signal: abortController.signal });
const id = setTimeout(() => {
rssi = 'Failed';
}, 3000);
return id;
}
function handleAdvEvent(event) {
abortController.abort();
rssi = event.rssi + " (before connection)";
console.log("rssi:", rssi);
}
Linux 上的 Web 蓝牙的一个已知问题是 WatchAdvertisement 无法正常工作,因为没有适当的底层系统 API 来支持此功能。此问题正在由 https://g-issues.chromium.org/issues/40233338 进行跟踪。