Android / iOS 蓝牙低功耗 (BLE) 与多个服务通信

Posted

技术标签:

【中文标题】Android / iOS 蓝牙低功耗 (BLE) 与多个服务通信【英文标题】:Android / iOS Bluetooth Low Energy (BLE) communication with multiple Services 【发布时间】:2015-12-08 10:37:31 【问题描述】:

我有一个 ios 应用程序通过以下方式宣传两个 BLE 服务(两个主要):

peripheralManager.addService(containingService)
peripheralManager.addService(preciseService)
peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [containingService.UUID, preciseService.UUID]])

我通过 LightBlue 应用验证了这两种服务都已宣传。

我想要在 android 端做的是为广告“preciseService”的设备获取 ScanResult。过滤它,但从未找到该设备。根本不过滤,找到了设备,但在 ScanRecord 中,方法 getServiceUUIDs 只返回“包含服务”的 UUID。

我知道我可以通过连接找到所有其他服务 UUID。在我的应用程序中,我不想连接到设备。所以我的问题是,是否有人知道为什么在 ScanRecord 中只能找到两个广告的主要服务之一?

非常感谢

【问题讨论】:

你应该通过ScanRecord.getBytes()查看原始字节,这样你就可以确认它们是否都遇到了,或者Android是否只是错误地解析了原始扫描记录。 【参考方案1】:

我意识到这完全取决于添加两个或多个 128 位 UUID 的长度。添加一个 128 位和一个 32 位 UUID 效果很好。

【讨论】:

以上是关于Android / iOS 蓝牙低功耗 (BLE) 与多个服务通信的主要内容,如果未能解决你的问题,请参考以下文章

Android 低功耗蓝牙(Ble) 开发总结

混合APP低功耗蓝牙项目解析数据可能用到的一些小方法---ble

Android BLE低功耗蓝牙开发极简系列(二)之读写操作

原创Android 5.0 BLE低功耗蓝牙从设备应用

Android ble (蓝牙低功耗) 中的坑和技巧

iOS 和 Android 蓝牙低功耗连接之间的区别