2015-10-07 61 views
1

我在使用自己生成的UUID(未使用由Bluetooth SIG保留的16位UUID)在Android BLE中进行通信时遇到问题。目标设备是两个 - 一个是外围设备(Samsung galaxy note 4/android 5.1.1),另一个是中央(Samsung Galaxy S5/android 5.0.1)。我把我自己的服务的UUID和特征的UUID放在外围设备上。在中央,它找不到特色,但服务。在Android BLE中遇到自定义UUID问题

看起来好像是由于没有使用these Characteristic UUIDs而是使用自定义生成的UUID造成的。 以下是我自己生成的UUID。

private static final UUID CUSTOM_SERVICE_UUID = UUID.fromString("abcd1111-0000-1000-8000-00805f9b34fb"); 
private static final UUID CUSTOM_CHARACTERISTIC_UUID = UUID.fromString("abcd1112-0000-1000-8000-00805f9b34fb"); 

服务,找到好,但特点,没有。 你有什么想法吗?

+0

我发现了一些东西,如果我使用这样的UUID,它可以很好地工作。 '服务UUID:000018XX-0000-1000-8000-00805f9b34fb特征UUID:00002AXX-0000-1000-8000-00805f9b34fb'※XX - 任意数字是否需要在特定位置使用特定号码? –

回答

3

您使用官方的基础UUID:(有的已分配)XXXXXXXX-0000-1000-8000-00805f9b34fb,使所有高32位被保留

相反,你应该使用自己的128位UUID。您可以使用online tool来生成一个。然后,将您自己的内部n位短uuid分配给您的每个特征。

例如:使用碱=> 18902a9a-1f4a-44fe-936f-14c8eea418xx

  • 服务=> 18902a9a-1f4a-44fe-936f-14c8eea41800
  • 特性=> 18902a9a-1f4a-44fe- 936f-14c8eea41801
+0

谢谢@smertrios,但如果我使用自己生成的128位UUID,AdvertiseCallback在'onStartFailure(int errorCode)'上用'AdvertiseCallback.ADVERTISE_FAILED_DATA_TOO_LARGE'返回错误代码。 –

+0

@SunggookKim这个错误是因为你的广告载荷数据太多。您使用[byte-length + AD-Type + Data]编码将每个数据段(UUID,名称等等)限制为总共31个字节。所以一个128位的UUID将占用1 + 1 + 16字节的有效载荷。就你而言,你看起来已经用完了你所有的31字节有效载荷。可能的罪魁祸首:您正在调用setIncludeDeviceName(true)并且您的设备名称太长... – smertrios

相关问题