You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么蓝牙LE设备名称有时在广播中显示有时缺失,Windows是否有BLE名称缓存?

BLE设备名称偶发为空及Windows缓存机制说明

蓝牙LE广播名称时有时无的核心原因

  • BLE广播包容量限制:标准BLE普通广播包最大仅31字节,很多设备会将完整设备名称放在扫描响应包中,仅当接收到主机端的主动扫描请求时才会返回该数据包。如果你的BluetoothLEAdvertisementWatcher设置的是BluetoothLEScanningMode.Passive(被动扫描模式,部分版本Windows为默认值),只会监听常规广播包,不会主动发送扫描请求,自然无法获取存放在扫描响应中的设备名称。
  • 设备自身的广播策略:大部分低功耗设备为了降低功耗、节省广播包空间,不会在每一轮广播中都携带完整设备名称,通常的策略是间隔数轮广播才发送一次带名称的数据包,或是仅在设备刚上电、待配对状态下才广播名称,正常运行阶段仅广播设备地址、服务UUID等必要信息。
  • 信号与丢包问题:如果设备信号较弱,刚好携带名称的广播包/扫描响应包出现丢包,也会导致本次触发OnAdvertisementReceived时拿不到设备名称。

Windows BLE设备名称缓存规则

Windows系统确实会维护全局的BLE设备名称缓存:

  • 缓存数据来源包括:已配对设备存储的名称、历史扫描过程中成功获取的设备名称、用户手动修改过的设备备注名。
  • 调用BluetoothLEDevice.FromBluetoothAddressAsync获取设备对象时,如果系统中已有对应设备的名称缓存,即使本次触发事件的广播包未携带名称,也会返回缓存的名称;如果没有对应缓存且本次扫描未拿到名称,Name属性就会为空。
  • 缓存会在每次扫描到该设备携带名称的广播/扫描响应时自动更新,删除已配对设备、或者在蓝牙设置中移除对应未配对设备记录时,会同步清除对应缓存。

如果要提升获取设备名称的成功率,可以将扫描模式修改为BluetoothLEScanningMode.Active,主动请求扫描响应包即可。

内容的提问来源于stack exchange,提问作者oregonduckman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:45:03