首页 > 解决方案 > BLE ScanRecord 的 getServiceData 包含什么?

问题描述

我有一个连接到蓝牙低功耗设备的应用程序。服务 UUID 提供了一个很好的指示,但这还不够:我需要查看设备在特定服务中提供的确切特征。我看到 ScanRecord 中有一个所谓的“服务数据”,它是一系列字节:

https://developer.android.com/reference/android/bluetooth/le/ScanRecord#getServiceData()

但是,我在任何地方都找不到任何详细信息:该服务数据中的信息是什么?在 nRF 连接中,它似乎是一个字节(或几个字节),所以它可能是某种位标志。我希望服务数据可以避免我发现设备,因为这需要连接到它,而我真的想避免这种情况。

举一个更具体的例子:我支持 FTMS 健身机 (0x1826),但只支持室内自行车 (0x2ad2 特性)、跑步机 (0x2acd) 或划船机 (0x2ad1),但不支持交叉训练机、踏步机或爬楼梯机。

标签: androidbluetoothbluetooth-lowenergygatt

解决方案


广告不包含有关设备具有哪些特性的数据。

服务 uuid 有广告类型,但标准规定的特征没有。

通常,如果您知道支持哪些服务,您也应该能够假设这些特征,因为每个服务的规范文档都应该包含该信息。

“服务数据”只包含任意字节。这些字节包含的内容由服务规范定义。


推荐阅读