2014-01-29 136 views
3

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

所有短的UUID(16位)保留等待BT服务规范的未来修订。 而现在的Android版本(4.4)似乎并不支持128位的UUID。

所以基本上我不能使用16位UUID来定义我的服务,但我无法使用Android过滤128位UUID的服务。 任何人都有最好的方式来实现它的想法? 谢谢

回答

0

显然不是所有的16位UUID都保留。在范围0x000E - 0x01FF中提到的UUID和UUID被保留。我用我的自定义配置文件的UUID FFF0 - FFFA,它仍然工作正常。

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

+0

从我的理解看来,范围0x00E - OxO1FF只保留属性。 (来自doc:以下属性ID对于所有服务具有相同的含义,这些属性ID应在0x0000到0x01FF范围内。)。所以我不知道以上所有的东西都可以使用......在TI示例中,他们使用id 0xFFF0作为他们的服务,但是从蓝牙的角度来看,这可以吗?与其他服务的碰撞风险相当高吗? –

+0

不建议从0xffff分配自定义'内部'UUID范围。标准开发组织(SDO)[描述](https://www.bluetooth.org/en-us/specification/assigned-numbers/sdo-16-bit-uuids)公司如何申请16位UUID和到目前为止唯一获得批准的是A4WP。它有0xFFFE,所以它似乎可能是从那里开始的,只是递减计数器。 –

1

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

我们扫描所有的设备和搜索我们通过LeScanCallback返回的byte [] scanRecord服务。

+0

这将永远是安全的和未来的证明。 Android似乎在其新的扫描API(21级)中支持更长的UUID。 Apple建议使用[工具](http://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder.html#setServiceUuid(android.os.ParcelUuid,android.os.ParcelUuid))来生成随机UUID使用。所以这看起来是正确的。 –