首页 > 解决方案 > Android BLE 广告不能超过 20 字节

问题描述

我正在尝试从我的 Android 应用程序发送一系列 BLE 广告。有没有办法将更多的 31 字节最大值用于 BLE 广告数据包的实际数据?目前,我最多只能为实际数据使用 20 个字节。这是我构建广告数据的代码。

AdvertiseData advertiseData = new AdvertiseData.Builder()
                        .addServiceData(uuid,adv_packet)
                        .addServiceUuid(uuid)
                        .setIncludeTxPowerLevel(false)
                        .setIncludeDeviceName(false)
                        .build();
                adv.startAdvertising(advertiseSettings, advertiseData, advertiseCallback);

当前最多adv_packet可以是 20 个字节。有没有办法可以增加这个最大值?

标签: androidbluetooth-lowenergy

解决方案


广告数据包固定为 31 个八位字节,将包含许多 AD 结构。每个 AD 结构应具有一个八位字节的长度字段,其中包含长度值,以及一个长度八位字节的数据字段。对于服务数据,这意味着大约 20 个八位字节的实际数据。

一些常见的解决方法是:

  1. 压缩/编码发送的数据
  2. 有许多广告,每个广告都有不同的数据
  3. 使用扫描响应

当然,展望未来,将会有蓝牙 5 扩展广告


推荐阅读