【问题标题】:BLE Advertise data size limitBLE Advertise 数据大小限制
【发布时间】:2019-09-02 12:18:39
【问题描述】:

在我的 Addroid 应用程序上,我尝试添加一些额外的数据,当我尝试开始 ble 广告时,据我所知,广告数据必须是

我就是这样做的:

var testData = "abcdefghij"
var data = AdvertiseData.Builder().apply {
               addServiceData(
                   ParcelUuid(MY_UUID),
                   testData.toByteArray(Charsets.UTF_8)
               )
           }
bleAdvertiser.startAdvertising(
    settings.build(),
    data.build(),
    advertiseCallback
)

通过这种方式,一切正常。现在如果testData 字段变为

var testData = "abcdefghijk"

由于超出广告数据大小限制,广告开始失败。

如果单个字符占用 2 个字节,为什么如果我有一个 11 个字符的字符串,我会超过 30 个字节的限制?

【问题讨论】:

    标签: kotlin bluetooth-lowenergy android-bluetooth android-ble


    【解决方案1】:

    三个标志字节首先自动添加。

    服务数据包包含第一个字节,表示它有多长,然后是一个字节的数据包标识符,表示这里有一个服务数据包。然后,您将获得服务 uuid(16 字节)的负载,后跟 10 字节的 UTF-8 编码字符串。

    总计 31 个字节。如果添加“k”,则会得到 32 个字节,因此数据会变得太长。

    【讨论】:

    • 谢谢,我缺少自动添加的默认字节。
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多