Android BLE广播标志修改:如何设置为仅LE模式?
Android BLE广播设置为仅LE模式的实现方法
- 问题本质:Android默认的BLE广播会自动添加同时支持Classic(BR/EDR)和LE的标志位,导致扫描端显示两种模式,需手动覆盖该标志位。
- 解决方案:在构建
AdvertiseData时,显式设置仅LE模式的标志常量:- 使用
AdvertiseData.Builder的addFlags()方法,传入AdvertiseData.FLAG_LE_ONLY_GENERAL_DISCOVERABLE(对应值0x06,代表仅LE可发现,不支持BR/EDR)。 - 代码示例:
- 使用
AdvertiseData advertiseData = new AdvertiseData.Builder() .setIncludeDeviceName(true) .addFlags(AdvertiseData.FLAG_LE_ONLY_GENERAL_DISCOVERABLE) // 关键设置 // 按需添加其他广播数据(服务UUID、厂商数据等) .addServiceUuid(ParcelUuid.fromString("你的服务UUID")) .build();
- 注意事项:若未显式设置Flags,系统会默认添加
0x07(同时支持Classic和LE),因此必须手动指定仅LE的标志位才能覆盖默认行为;部分老旧Android设备可能存在兼容性差异,建议多机型测试。
内容的提问来源于stack exchange,提问作者GPS
相关产品推荐
相关产品推荐

