Ⅰ android BLE蓝牙踩坑总结
自从 Android-BLE 库开源了一段时间以来,越来越多的小伙伴问到了各种各样的关于BLE的奇怪问题,在这里我想跟大家分享一下本人对于Android BLE蓝牙的一些看法和解决方式,避免刚接触的小伙伴再次踩坑。
很多人曾问过我这个问题,为什么其他手机都没什么问题,就华为的一些手机老是连接不稳定,经常连接的很慢,而且连接上还经常断开。的确,在这里强调一下华为的一部分手机确实很容易出现这种问题,有时候软件、硬件都搞不定,而且经常性收到客户投诉关于华为手机连接稳定性问题,这个的确没有完全解决的办法,只能靠App和硬件的优化,并不是想甩锅给华为,咱也不敢问到底是什么原因,而且我们公司专门针对各个Android版本的手机做过测试,包括蓝牙传输速率的测试,最后发现华为P20的速度竟然跟小米8的速度差了好几倍,按理说P20手机也不便宜啊,为什么手机搜物蓝牙芯片不能做的再好一点呢?
BLE扫描滥用预防
AOSP-BLE扫描世岁液滥用说明
息屏状态下,蓝雀斗牙扫描日志,因为扫描周期是12s,所以打印的时间戳间隔是12s,这里的日志为系统日志。
https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/master/include/bt_target.h#1428
stackoverflow问答社区
Ⅱ 蓝牙Android误差问题,怎么解决
1.中兴手机,蓝牙手动断开后,无法再次链接问题。(可能别的手机也存在类似问题)
解决办法: 在连接gatt之前,对bluetoothadapter进行一次scan 顺利解决此问题。
2.Gatt链接不稳定(在部分手机上出现过,此问题先排除硬件问题。此处只针对自己遇到的情况,或许有别的方案,待补充)
解决办法: 由于用到了gattserver,在启动gattserver和连接gatt之间由于未做顺序的限制,导致了此问题。经过反复调试后,发现只需要先创建gattserver,在serviceadded之后,在去进行gatt链接,此时的gatt连接会比较稳定。
3.小米手机遇到的,在gatt连接之后,手动调用gatt.disconnect 和 close。第二次链接后 自动断开,再次连接会重新绑定。
解决办法:也是无意中,看到一篇文章,写的是小米手机在gatt操作的时候 ,最好要做一下sleep操作,可能是因为小米底层对蓝牙的某些东西没有来得及释放(自己猜测)。 于是在gatt 连接上时,在gatt.discoverServices 之前,加上 sleep(500) ,发现断开后在连接 成功率大大提高。
Ⅲ Android 7.0 WiFi和蓝牙经常自动关闭是为什么
升级一下系统试试 如果是WIFI模式一直下载 一般情况下也不会掉点很多 20到头了 蓝牙自动开 考虑是被其他程序后台开启了 安卓一半软件都有后台程序 用乐安全或者ROOT后用lBE安全大师禁止后台启动 后台操作手机等等
Ⅳ 如何让android 蓝牙连接之后断开,再自动尝试连接
手机连接蓝牙设备后会自动断开连接,建议检查:
1.查看蓝牙设备是否远离机器。
2.手机是否开启了飞行模式或超级省电模式。若开启,手机将会关闭蓝牙功能。如需使用蓝牙,需要重新开启。
3.将手机关机重启。
4.若依然自动断开蓝牙连接,建议更换其他蓝牙设备尝试。
5.若无效,请检查手机是否有系统更新推送通知。若有,将手机升级到最新版本。
6.若问题依然存在,请备份手机数据,将机器恢复出厂设置尝试。
若上述操作后手机仍然自动断开蓝牙连接,请您携带购机发票、包修卡和机器送到三星服务中心检测。
Ⅳ 如何实现android蓝牙自动配对连接
在Android设备上实现蓝牙自动配对连接涉及多个步骤。首先,你需要获取BluetoothAdapter实例,这通过BluetoothAdapter.getDefaultAdapter()实现。如果返回值为null,说明手机不支持蓝牙功能。
接下来,检查蓝牙是否已经开启,使用blueadapter.isEnabled()方法。如果返回false,需要开启蓝牙。
为了让设备进入可配对模式,你需要启动一个配置蓝牙可见性的Intent。这一步骤通过创建Intent对象,并设置EXTRA_DISCOVERABLE_DURATION参数来实现,200秒表示设备在200秒内保持可见。
在AndroidManifest.xml文件中,你需要声明使用蓝牙权限,否则可能会遇到权限拒绝的错误。
自动配对过程需要设置Pin值。这里提供了一个静态方法autoBond,它接收蓝牙设备类、蓝牙设备实例和Pin值作为参数。通过反射调用蓝牙设备的setPin方法来设置Pin值。
最后,通过createBond方法发起配对请求。这也是通过反射调用蓝牙设备的createBond方法实现。这个方法返回一个布尔值,表示配对是否成功。
在进行自动配对连接时,务必确保蓝牙设备支持此类操作,并在测试环境中进行充分测试。此外,处理蓝牙连接时还需注意异常情况,确保程序的健壮性。
以上步骤详细介绍了如何在Android上实现蓝牙自动配对连接,适用于需要频繁进行蓝牙设备连接的应用场景。
实现自动配对连接后,你可以通过监听BluetoothDevice的连接状态变化来进一步优化用户体验,例如,在设备成功连接时触发特定操作。
值得注意的是,自动配对连接的成功与否取决于多种因素,包括蓝牙设备的兼容性、配对过程中的干扰等。
此外,确保在用户首次使用应用时,明确提示他们启用蓝牙功能,并告知自动配对连接的具体步骤,以提高用户体验。