2014-01-29 132 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使用。所以這看起來是正確的。 –