我们正在开发定制蓝牙低能耗外设,我们需要定义我们的定制服务。 基于此链接:https://www.bluetooth.org/en-us/specification/assigned-numbers/service-discovery
保留所有短UUID(16位)以待将来修订BT服务规范。 而且似乎当前版本的Android(4.4)不支持128位UUID。
所以基本上我不能使用16位UUID来定义我的服务,但我无法使用Android过滤我的128位UUID服务。 有人知道实施它的最佳方法吗? 感谢
答案 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)