Android BLE //使用自定义服务UUID

时间:2014-01-29 10:37:26

标签: android bluetooth bluetooth-lowenergy android-bluetooth

我们正在开发定制蓝牙低能耗外设,我们需要定义我们的定制服务。 基于此链接:https://www.bluetooth.org/en-us/specification/assigned-numbers/service-discovery

保留所有短UUID(16位)以待将来修订BT服务规范。 而且似乎当前版本的Android(4.4)不支持128位UUID。

所以基本上我不能使用16位UUID来定义我的服务,但我无法使用Android过滤我的128位UUID服务。 有人知道实施它的最佳方法吗? 感谢

3 个答案:

答案 0 :(得分:1)

我仍然不确定是否可以使用自定义16位UUIDS,因此我们设法根据此SO问题做其他事情。 startLeScan with 128 bit UUIDs doesn't work on native Android BLE implementation

我们扫描所有设备并在LeScanCallback返回的 byte [] scanRecord 中搜索我们的服务。

答案 1 :(得分:0)

显然不是所有的16位UUID都是保留的。提到的0x000E - 0x01FF范围内的UUID和UUID是保留的。我已经使用UUIDs FFF0 - FFFA作为我的自定义配置文件,它仍然可以正常工作。

在TI的简单外设示例中查看simpleGATTProfile。

答案 2 :(得分:0)

16位UUID是较长UUID的快捷方式。 例如,血压UUID(0x1810)与

相同
UUID.fromString("00001810-0000-1000-8000-00805F9B34FB")

这样,您可以执行以下操作:

val ids = arrayOf(UUID.fromString("00001810-0000-1000-8000-00805F9B34FB"))
startLeScan(ids, myCallback)