在使用不同版本的Android设备扫描时,为同一个BLE设备获取不同的byte [] scanRecord数据

时间:2017-05-23 05:26:59

标签: android bluetooth-lowenergy

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数据。

我附上了详细的照片。enter image description here enter image description here

1 个答案:

答案 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!