BLE在Android各版本兼容注意事项

Android BLE

28(9)

27(8.1)

1、Android 8.1系统,在屏幕关闭之后,扫描会被暂停,如果需要在屏幕被关闭之后还继续进行扫描的话,需要在扫描配置那里,加入一个空的过滤器,如下:

List<ScanFilter> filters = Collections.singletonList(new Builder().build());

26(8.0)

新的设备配套方法,支持BLE,未测试过,https://developer.android.com/guide/topics/connectivity/companion-device-pairing,Android官网,需梯子;

25(7.1.1)

24(7.0)

Android 7.0系统限制在30s内最多启动扫描5次。其实,只要在30s内不要连续调用stopScan这个方法,连续调用startScan这个方法很多次都不会存在问题,会持续返回扫描到的设备数据;

23(6.0)

1、扫描功能需要申请位置权限;部分机型在申请了位置权限之后还是无法扫描到设备,可能是由于系统设置中的定位服务需要开启的关系;

2、对蓝牙的连接,读写,广播等操作,需要申请蓝牙管理权限(android.permission.BLUETOOTH_ADMIN);

22(5.1)

21(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地址;

18(4.3)

Android 4.3之后,开始支持BLE低功耗蓝牙;

你可能感兴趣的:(Android,Bluetooth)