在低功耗蓝牙(BLE)开发过程中碰到过不少坑,作为记录总结一下在开发过程中关于开启扫描遇到的问题。
开发低功耗蓝牙过程中因为Android系统的不断升级和优化,关于BLE的开发也会在升级过程中遇到不同的问题。关于开启扫描问题总结如:
在开发过程中关闭扫描后再开启扫描不成功问题
在开发过程中不可避免的会遇到关闭扫描开启扫描如此重复操作的问题,但在某些时候会出现关闭后无法再开启扫描的问题。
E/BtGatt.GattService: App 'com.bluetooth.app' is scanning too frequently
这时问题就是你开启扫描功能太频繁了,导致系统吃不消导致的,遇到这种情况你需要在关闭扫描之后至少停止2秒钟,然后再次调用开启扫描方法,开启成功。
在Android 6.0及以上版本中开启蓝牙扫描后扫描不到数据问题
在Android 6.0之前的版本中能够完美运行,但换到Android 6.0 及以上系统的手机运行时搜索不到数据。
这是因为在Android 6.0及以上系统中低功耗蓝牙添加了距离检测功能,所以扫描时需要开启定位功能权限,在更高版本中甚至需要开启精准定位权限
在代码中也需要申请动态权限
//清单文件里面也需要配置
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.ACCES