1、Android 8.1/9
在屏幕关闭之后,扫描会被暂停,如果需要在屏幕被关闭之后还继续进行扫描的话,需要在扫描配置那里,加入一个空的过滤器。
如下:
List
2、Android 8.0
新的扫描方法,可以通过外设保活,https://developer.android.com/guide/topics/connectivity/companion-device-pairing,Android 官网,需梯子。
3、Android 7.1.1/7.0
Android 7.0 系统限制在 30s 内最多启动扫描 5 次。
其实,只要在30s内不要连续调用stopScan这个方法,连续调用startScan这个方法很多次都不会存在问题,会持续返回扫描到的设备数据;
4、Android 6.0
1)扫描功能需要申请位置权限;部分机型在申请了位置权限之后还是无法扫描到设备,可能是由于系统设置中的定位服务需要开启的关系;
2)对蓝牙的连接,读写,广播等操作,需要申请蓝牙管理权限(android.permission.BLUETOOTH_ADMIN)。
5、Android 5.1/5.0
1)蓝牙 startScan 分了低版本(5.0之下)和高版本(5.0以上)的api,低版本中建议startLeScan不要传递uuid,高版本中建议不要用到onBatchScanResults的方式;
2)支持作为从端进行广播,但是不一定所有5.0+的手机都支持作为从端,部分手机不支持,需要用方法进行判断是否支持,如下:(BluetoothAdapter.class)
/**
* Returns a {@link BluetoothLeAdvertiser} object for Bluetooth LE Advertising operations.
* Will return null if Bluetooth is turned off or if Bluetooth LE Advertising is not
* supported on this device.
*
* Use {@link #isMultipleAdvertisementSupported()} to check whether LE Advertising is supported
* on this device before calling this method.
*/
public BluetoothLeAdvertiser getBluetoothLeAdvertiser() {
if (!getLeAccess()) {
return null;
}
synchronized (mLock) {
if (sBluetoothLeAdvertiser == null) {
sBluetoothLeAdvertiser = new BluetoothLeAdvertiser(mManagerService);
}
}
return sBluetoothLeAdvertiser;
}
还有作为从端进行广播的时候,如果被连接后,会马上启动一个新的广播,并且新的广播会携带一个新的mac地址,之前的连接没断,如果新的mac地址被连接了,之前的连接会断开,并且又新启动一个新的广播,新的mac地址;
6、4.3
Android 4.3之后,开始支持BLE低功耗蓝牙。
refer:
https://blog.csdn.net/chen_xi_hao/article/details/86664197