Android Lollipop推出了一种通过BluetoothLeScanner扫描BLE外设的新方法。
根据我的阅读,新扫描API解决了旧扫描API(BluetoothAdapter.startLeScan(UUID[],LeScanCallback)
)发生的问题,在某些设备上,每个外设只调用一次回调(onLeScan
),甚至如果外围设备继续做广告。
此问题在iOS上使用CBCentralManagerScanOptionAllowDuplicatesKey选项处理,允许您选择是仅检测新外围设备还是继续从以前找到的外围设备获取广告。
新的Android Lollipop API中是否有类似的选项?即决定你只想为新的外围设备(新的MAC地址)调用回调,而不是为同一个外设调用两次。
我知道可以通过保存以前收到的所有MAC地址的列表集来轻松实现 - 但这种方式不利用硬件优化。