蓝牙链路断开的原因蓝牙连接是使用蓝牙的基础,那蓝牙断开可能就不完全是我们能够控制的。也就是说蓝牙链路的断开可能因为各种各样的原因,那本篇就带大家详解蓝牙断开的原因。
蓝牙连接是使用蓝牙的基础,那蓝牙断开可能就不完全是我们能够控制的。也就是说蓝牙链路的断开可能因为各种各样的原因,那本篇就带大家详解蓝牙断开的原因。
蓝牙链路也就是蓝牙专业人士说的ACL链路,所有的蓝牙操作都是在此基础上进行的,一旦ACL断开,那蓝牙功能必定无法使用。但蓝牙断开的原因很多,具体是啥原因?我们从何获取?带着这些疑问我们开始吧。
BluetoothDevice类中定义了ACL断开的广播为:
广播里的内容只包含了远端设备BluetoothDevice,无法知道ACL断开的具体原因,那就让我们从底层到上层梳理下ACL断开完成事件上报流程中是否有reason这个参数。
查看蓝牙协议Core_v5.0.pdf里Vol 2, Part E中的7.7.5的HCI事件Disconnection Complete Event:
协议里详细规定了上报ACL断开完成事件时是必须带有断开原因的参数,所有我们跟着ACL断开完成事件的上报流程来追踪reason参数存储在何处,下图为详细的上报时序图:
ACL断开完成事件的处理在bluedroid中有将reason保存,但最后回调上报JNI时却没带上该参数,导致蓝牙服务层没法知道断开原因。
到这里我们大致清楚ACL断开的reason还被保存在bluedroid中,没有上报给服务层,只需在合适的地方将该参数通过回调的方式上报给蓝牙服务即可(参照下图在 btif_dm_upstreams_evt() 中的一种获取方式)。蓝牙服务广播ACL断开时添加reason参数就可被应用获取到断开原因,应用根据不同的断开原因采取不同的操作来完善蓝牙功能。
如何获取蓝牙ACL链路的断开原因就总结到这,期望能给大家一点启发。感兴趣的小伙伴也欢迎私信留言一起讨论。
这是因为车机系统和手机蓝牙之间的兼容性差,导致容易断开连接。建议用户更新导航或手机的系统,使之匹配。
经常处于磁场干扰严重的区域,如各种通信基站,变电站。尝试关闭车无用的电子设备。
车内的电子设备干扰导致连接断断续续。尝试清空连接记录,或恢复车机的原厂设置。
车机里有存在太多的连接记录,导致车机在选择连接的时候出现混乱。更换音乐软件。
扩展资料:
手机蓝牙连接注意事项:
蓝牙最基本的功能就是联系两个不同的设备,让两个设备能够一起合作。比如传输文件。
同样的如果有什么电影和音乐需要分享,我们也可以通过蓝牙进行分享。而且速度还很快。
在使用手机的时候,如果换了一台新的手机,那么蓝牙就可以把联系人传过去,非常的方便。
另外通常大家在共享网络的时候,可能没有注意到,原来蓝牙也可以设置成共享网络。如果电脑也有蓝牙,那么把手机和电脑连接,不仅可以打电话,还可以传输文件。
参考资料来源:百度百科-手机蓝牙