private final BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
}
}
我从版本4.4.2和Nexus 7 5.1版本的Acer表中扫描了一个BLE设备。我想使用UUIDS过滤BLE设备,但我为同一个BLE设备获取不同的scanRecord数据。
答案 0 :(得分:2)
这在BLE世界非常普遍。当BLE设备 宣传 多个 服务 时 - 扫描仪可以 过滤 em> 它需要什么或与之相关。我在HRM(心率监测)设备中看到过类似的行为,它也可以兼作Food Pod(配置文件 - RSCP) - 因此可以同时实现2个服务。
对于此类设备(托管多种服务),最好为BLE扫描结果提供类型解析策略 - 例如,这可能是一个优先顺序: -
1. GAP Appearance
2. GATT Service
我上面提到的健身传感器(TICKR RUN from Wahoo)将GAP外观设置为833带式HRM,并通告2 UUID s-HRP和RSCP。因此,通过纯粹的扫描(广告)结果,我们认为它只是一个HRM设备。只有在您连接到它以检索GATT服务后,您才能获得全套GATT UUID,结果证明它支持 RSCP (运行速度和Cadence配置文件)和 HRP (Heart评级简介)
现在从扫描的角度来看 - 在发现阶段连接到每个设备是一个昂贵的游戏,因此可以使用设备宣传的主要服务
HTH!