【IoT】Android 各版本对 BLE 兼容支持汇总

【IoT】Android 各版本对 BLE 兼容支持汇总

1、Android 8.1/9

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

如下:

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

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

🎯 相关推荐

灋字《说文解字》原文及注解
365bet足彩网上投注

灋字《说文解字》原文及注解

📅 07-17 👁️ 6232
彩云传奇
365bet进入官网

彩云传奇

📅 07-17 👁️ 6688
揭秘搬砖玩家热衷刷格兰迪,为何这个游戏角色如此火爆?
你真的了解比赛赛制吗?
365bet足彩网上投注

你真的了解比赛赛制吗?

📅 07-19 👁️ 6479
热水袋如何清洗?
365bet进入官网

热水袋如何清洗?

📅 07-03 👁️ 1869
魔域从哪里去神界最快(魔域怎么去神界)
365bet进入官网

魔域从哪里去神界最快(魔域怎么去神界)

📅 07-17 👁️ 5675