Android 4.0 蓝牙连接遇到的奇怪问题
在连接时有这么一个情况,我先打开app端的蓝牙搜索功能,然后在硬件关机状态下开机,app端设置扫描时间为30s,待app端扫描到硬件时,点击硬件建立连接,这时候底层会报一个133的错误,再去连接会一直报133的错误,退出app再去搜索连接依然还是133,但是重启系统蓝牙再去搜索连接好使。但是这个情况并不是在所有手机上都有,在三星Note4 手机上直接连上或者开始会报133,但是再去连接依然会连接上,非三星手机 华为荣耀 7i,P9,小米4c等就和上述描述的情况一样需要重启蓝牙才能再次连接上。
最开始报133这个问题,查阅网上资料都说是没有执行gatt的close()方法,gatt对象的数量超过Android系统最大数量导致,于是我在每次在重新连接前都执行disconnect()和close()方法,但是这样依然会出现上面的问题。这是说一下三星手机和非三星手机的重连方法,重连有两种一种是使用已有对象gatt.reconnect()方法,另一种是重新建立gatt对象,bluetoothDevice.connectGatt(this, false, mGattCallback)方法。对于三星手机我使用第一种和第二种方法都好使,所以就使用了第一种。对于非三星手机,经我测试和从网上查阅的资料看第一种方式连接成功的概率非常小,所以我使用第二种方式,相当于重新建立一次蓝牙连接。
对于133的问题打印的log日志如下:
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=ed47197c-722e-49de-a2b6-97b87579dd14
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=8
D/BluetoothLeClass: Trying to create a new connection.
D/BluetoothGatt: onClientConnectionState() - status=133 clientIf=8 device=BE:EF:BE:EF:BA:E9
I/BluetoothLeClass: Disconnected from GATT server.
对于这种重启蓝牙能重新建立连接的这种方法,我开始怀疑是否真的是在蓝牙建立连接过程中发生阻塞了,于是我又用反射调用了gatt对象的refresh()方法,在执行close()之前执行,但是并没什么用。 最后我再说下前提条件我们的硬件是没有问题的,ios端和电脑端蓝牙连接都是没有这个问题出现的。各位朋友,有什么想法或者建议衷心希望您提出来,小弟非常感谢!
相关推荐
Android BLE蓝牙踩坑总结
简介 自从Android-BLE库开源了一段时间以来,越来越多的小伙伴问到了各种各样的关于BLE的奇怪问题,在这里我想跟大家分享一下本人对于Android BLE蓝牙的一些看法和解决方式,避免刚接触的小伙伴再次踩坑。 题外话 很多人曾问过我这个问题,为什么其他手机都没什么问题,就华为的一些手机老是连接不稳定,经常连接的很慢,而且连接上还经常断开。的确,在这里强调一下华为的一部分手机确实很容易出现这...
Android蓝牙问题排查:从Logcat到HCI日志的完整抓取与分析指南
在移动开发与物联网领域,蓝牙(Bluetooth)作为近场无线通信的核心技术,其稳定连接与数据传输是众多应用的基础。理解蓝牙协议栈的工作原理,特别是主机控制器接口(HCI)的数据交互机制,是深入排查连接故障、音频卡顿或配对失败等问题的关键。掌握有效的日志抓取技术,能将底层的协议事件转化为可分析的线索,对于提升开发调试效率、保障硬件产品体验具有重要工程价值。本文聚焦Android平台,系统介绍如何获取从应用层到底层HCI数据包的全链路日志,包括使用标准Logcat、启用HCI信息收集日志、提取完整Bug报告等
蓝牙协议栈与核心规范:从广播到连接的通信基石
本文深入解析蓝牙协议栈与核心规范,从广播到连接的完整通信机制。详细介绍了GAP广播与扫描、连接建立过程、GATT数据交互模型等关键技术,并提供了实战优化技巧和常见问题解决方案。了解这些蓝牙通信基石,有助于开发智能硬件和优化无线连接性能,特别是在IoT领域的应用。
安卓手机与HC-05蓝牙模块通信:从硬件连接到数据互传的完整指南
本文详细介绍了安卓手机与HC-05蓝牙模块的完整通信流程,包括硬件准备、接线指南、AT指令配置、手机端配对实战以及数据互传技巧。通过实用的排错指南和进阶优化建议,帮助开发者快速掌握蓝牙通信技术,实现稳定可靠的数据传输。
树莓派3B+刷LineageOS安卓9.0实战:从镜像下载到WiFi配置全流程
本文提供了在树莓派3B+上刷入LineageOS安卓9.0系统的完整实战指南。详细介绍了从获取正确的KonstaKANG镜像、使用balenaEtcher烧录SD卡,到首次启动、WiFi配置及系统优化的全流程。旨在帮助开发者将树莓派变身为功能完整的安卓设备,适用于媒体中心、轻量游戏终端等场景。



