|
本帖最后由 lill 于 2018-11-29 16:43 编辑
在安卓系统框架内部,有三类蓝牙搜索设备方式,下面讲讲三类的差异。
第1类:
调用startDiscovery(),该接口是蓝牙设置里面调用的扫描接口,既可以扫描传统蓝牙设备,也可以扫描低功耗蓝牙设备。
调用cancelDiscovery()则取消扫描。
第2类:
调用startLeScan(LeScanCallback callback)或者带过滤UUID功能的startLeScan(final UUID[] serviceUuids, final LeScanCallback callback)方式,该接口在android5.0以后就废弃了。谷歌为保持设备的兼容性,还是允许用户调用的,不过建议根据系统版本号来判断是否调用。
调用stopLeScan(LeScanCallback callback)则取消扫描。
第3类:
Android5.0以后,新增了一个BluetoothLeScanner类,调用startScan(final ScanCallback callback)或者startScan(List<ScanFilter> filters, ScanSettings settings, final ScanCallback callback),建议高版本安卓系统中采用这种方式,兼容性会好些。这里需要注意下扫描配置参数ScanSettings类,里面可以设置基于功耗和效率考虑的不同模式,比如SCAN_MODE_LOW_POWER、SCAN_MODE_BALANCED或者SCAN_MODE_LOW_LATENCY,也可以设置基于手机底层硬件考虑的搜索设备返回模式,比如MATCH_NUM_ONE_ADVERTISEMENT、MATCH_NUM_FEW_ADVERTISEMENT和MATCH_NUM_MAX_ADVERTISEMENT。
调用stopScan(ScanCallback callback)则取消扫描。
|
|