Android14 手机蓝牙配对后阻塞问题解决

Android14 手机蓝牙配对后阻塞问题解决

文章目录

  • Android14 手机蓝牙配对后阻塞问题解决
    • 一、前言
    • 二、手机蓝牙配对后阻塞问题解决
      • 1、部分日志:
      • 2、解决方法
    • 三、其他
      • 1、Android14 蓝牙 BluetoothService 启动和相关代码介绍
      • 2、Android14 待机关机蓝牙自动关闭分析解决

一、前言

Android13、14 手机配对蓝牙后会造成阻塞问题。
Google 问题。测试了Android13 Google 手机也是有这个问题。

具体复现步骤和现象就是:
一台Google手机蓝牙配对另外一台手机的蓝牙后,
Google 手机重新扫描蓝牙设备就会无法扫描到其他设备,需要等待20多秒超时处理后才能重新看到扫描的蓝牙设备。

这个问题是Android14设备中一个自定义的系统应用不断连接、断开蓝牙出现无法扫描到蓝牙情况后发现的,后续的解决是把手机配对后连接的流程时间减少解决的,不然中途一直进行其他操作就有可能导致蓝牙服务异常。

只有手机之间配对会存在这个问题,手机和蓝牙配对是没有这个问题的,
大概原因就是手机配对后想进入连接状态,但是实际上无法进入连接状态,一直处于某种阻塞状态,直到连接超时才恢复正常。

这里记录一下,有蓝牙相关功能开发的可以看看。

二、手机蓝牙配对后阻塞问题解决

1、部分日志:

[16:05:06]09-06 16:05:07.854 22976 23060 W btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:1167 BTM_IsAclConnectionUpAndHandleValid: Unable to find active acl
[16:05:06]09-06 16:05:07.857 22976 23019 I BluetoothBondStateMachine: Entering PendingCommandState State
[16:05:06]09-06 16:05:07.861 22976 23019 I BluetoothBondStateMachine: Bond State Change Intent:18:87:40:11:16:0E BOND_NONE => BOND_BONDING
[16:05:06]09-06 16:05:07.866 22976 23114 D BluetoothDatabase: getCustomMeta: device 18:87:40:11:16:0E is not in cache[16:05:08]09-06 16:05:09.565 22976 23060 I btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:1476 change_connection_packet_types: Unable to include remote supported packet types as read feature incomplete
[16:05:08]09-06 16:05:09.565 22976 23060 I btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:1477 change_connection_packet_types: TIP: Maybe wait until read feature complete beforehand
[16:05:08]09-06 16:05:09.565 22976 23060 W btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:1145 BTM_SetLinkSuperTout: Role is peripheral so unable to set supervision timeout:80.00ms bd_addr:xx:xx:xx:xx:16:0e
[16:05:08]09-06 16:05:09.565 22976 23060 I bt_btm_sec: packages/modules/Bluetooth/system/stack/btm/btm_sec.cc:4510 btm_sec_auth_timer_timeout: btm_sec_auth_timer_timeout: starting authentication[16:05:12]09-06 16:05:13.725 22976 23019 D AdapterProperties: Adding bonded device:18:87:40:11:16:0E
[16:05:12]09-06 16:05:13.726 22976 23019 I BluetoothBondStateMachine: 18:87:40:11:16:0E is bonded, wait for SDP complete to broadcast bonded intent
[16:05:12]09-06 16:05:13.726 22976 23019 I BluetoothBondStateMachine: StableState(): Entering Off State[16:05:16]09-06 16:05:17.971 22976 23060 W l2c_link: packages/modules/Bluetooth/system/stack/l2cap/l2c_link.cc:500 l2c_link_timeout: TODO: Remove this callback into bcm_sec_disconnect
[16:05:16]09-06 16:05:17.971 22976 23060 I btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:188 hci_btsnd_hcic_disconnect: Disconnecting peer:xx:xx:xx:xx:16:0e reason:Remote Terminated Connection comment:stack::l2cap::l2c_link::l2c_link_timeout All channels closed//下面这个日志之后,蓝牙列表才可以重新扫描到
[16:05:42]09-06 16:05:43.870 22976 23028 I bluetooth: packages/modules/Bluetooth/system/gd/hci/acl_manager/le_impl.h:909 on_create_connection_timeout: on_create_connection_timeout, address: 18:87:40:11:16:0e[PUBLIC_DEVICE_ADDRESS]

重点是:on_create_connection_timeout

上层的主要日志都是cpp相关,c的代码不熟悉,不做具体分析,这里直接提供一个答案。

2、解决方法

packages/modules/Bluetooth/system/gd/hci/acl_manager/le_impl.h


constexpr uint32_t kCreateConnectionTimeoutMs = 5 * 1000; /* change connect time 原本是30秒 */

这个是供应商提供的对策。
里面蓝牙里面有很多不同连接的超时时间,上面这个时间是针对手机配对连接的。
虽然写的是5秒,但是实际1秒左右就跳过了。
上面可能不是最优解,但是也算是一种解决方式。

三、其他

1、Android14 蓝牙 BluetoothService 启动和相关代码介绍

蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。
某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。蓝牙开关状态不记忆或者打开异常就可以看看BluetoothManagerService的日志,
里面有打开关闭相关过程日志和时间点,这个对问题分析有一定的帮助。

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142264944

2、Android14 待机关机蓝牙自动关闭分析解决

Android14 设备蓝牙开启的情况,待机关机后再开机出现有概率蓝牙关闭的问题。设备开机后手动打开蓝牙是可以正常打开的。通过分析发现是上层的蓝牙服务中有监听关机广播,有关闭蓝牙动作。但是为啥会出现有概率关闭呢,具体原因是因为有时候蓝牙关闭流程没走完或者有些蓝牙关闭流程未走到设置蓝牙关闭属性的情况。

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142265044

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/54493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.C_数据结构_队列

概述 什么是队列: 队列是限定在两端进行插入操作和删除操作的线性表。具有先入先出(FIFO)的特点 相关名词: 队尾:写入数据的一段队头:读取数据的一段空队:队列中没有数据,队头指针 队尾指针满队&#…

FPGA与Matlab图像处理之直方图均衡化

文章目录 一、什么是直方图?二、什么是直方图均衡化?三、Matlab实现直方图均衡化的步骤第一步: 彩色图像转成灰度图像第二步:提取亮度通道的直方图第三步:累计亮度通道的像素值频率第四步: 映射到新的灰度值 四、Veri…

嵌入式 开发技巧和经验分享

文章目录 前言嵌入式 开发技巧和经验分享目录1.1嵌入式 系统的 定义1.2 嵌入式 操作系统的介绍1.3 嵌入式 开发环境1.4 编译工具链和优化1.5 嵌入式系统软件开发1.6 嵌入式SDK开发2.1选择移植的系统-FreeRtos2.2FreeRtos 移植步骤2.3 系统移植之中断处理2.4系统移植之内存管理2…

【java面经】Redis速记

目录 基本概念 string hash list set zset 常见问题及解决 缓存穿透 缓存击穿 缓存雪崩 Redis内存管理策略 noeviction allkeys-lru allkeys-random volatile-random volatile-ttl Redis持久化机制 RDB快照 AOF追加文件 Redis多线程特性 Redis应用场景 缓…

【医学半监督】置信度指导遮蔽学习的半监督医学图像分割

摘要: 半监督学习(Semi-supervised learning)旨在利用少数标记数据和多数未标记数据训练出高性能模型。现有方法大多采用预测任务机制,在一致性或伪标签的约束下获得精确的分割图,但该机制通常无法克服确认偏差。针对这一问题,本文提出了一种用于半监督医学图像分割的新…

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的? 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的? 文章目录 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?1. 什么是梯度?2.梯度…

2024-04-23 人工智能增强天基通信和传感

砺道智库2024-04-23 11:18 北京 据国家防务网4月19日报道,随着商业卫星、军事星座及其所有数据在太空中流动的数量不断增加,政府和行业运营商表示,他们正在寻求人工智能来帮助他们处理日益复杂的任务。 人工智能软件使用户能够在轨道上改变航…

饲料颗粒机全套设备有哪些机器组成

饲料颗粒机全套设备通常包括原料粉碎、混合机、制粒机、冷却器、筛分机、包装机以及配套的电气控制等多个部分组成:1、粉碎机:将各种饲料原料进行清理、去杂、破碎等预处理,确保原料的纯净度和适宜粒度,为后续加工做准备。2、混合…

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型 1. 基于 Simulink 的仿真模型1.1 PMSM 的数学模型1.2 Simulink 仿真模型1.3 模块封装(mask)1.4 三相PMSM矢量控制仿真模型 2. Simscape 的 PMSM 模块2.1 PMSM 模块的配置2.2 PMSM 模块…

数据结构与算法学习day22-回溯算法-分割回文串、复原IP地址、子集

一、分割回文串 1.题目 131. 分割回文串 - 力扣(LeetCode) 2.思路 分割回文串可以抽象为一棵树形结构。 递归用来纵向遍历,for循环用来横向遍历,切割线(就是图中的红线)切割到字符串的结尾位置&#xf…

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代,想必大家对其都不陌生。随着科技的发展,常用的路由器上的天线也越来越多,那么问题来了:天线越多,信号越好吗?路由器…

浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合。 目录 微服务远程调用 Eureka注册中心 搭建Eureka Server 注册组件 服务拉取 当各种各样的服务越来越多,拆分的也越来越细,此时就会出现一个服务集…

计算机毕业设计 社区医疗服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

MySQL高阶1919-兴趣相同的朋友

题目 请写一段SQL查询获取到兴趣相同的朋友。用户 x 和 用户 y 是兴趣相同的朋友,需满足下述条件: 用户 x 和 y 是朋友,并且用户 x and y 在同一天内听过相同的歌曲,且数量大于等于三首. 结果表 无需排序 。注意:返…

常见排序(C语言版)

1.排序的概念及其应用 1.1排序的概念 排序:​ 在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。 稳定性:假定在待排序的记录序列中&#xff…

聚观早报 | 小米三折叠手机专利曝光;李斌谈合肥投资蔚来

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 9月20日消息 小米三折叠手机专利曝光 李斌谈合肥投资蔚来 索尼PS5 Pro包装亮相 新一代Spectacles AR眼镜发布 通…

《AI系统:原理与架构》于华为HC大会2024正式发布

2024年9月21日,《AI系统:原理与架构》新书发布会在上海世博馆华为HC大会顺利举办。本书由华为昇腾技术专家、B站AI科普博主ZOMI酱和哈工大软件学院副院长苏统华教授联合编写,是领域内AI系统方面填补空白的重磅之作。 发布会上,《A…

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中,都会进行自定义异常,并且都是需要配合统一结果返回进行使用。 1.背景引入 (1)背景介绍 为什么要处理异常?如果不处理项目中的异常信息,前端访问我们后端就是显示访问失败的…

JavaScript发送邮件:实现前端触发的教程?

JavaScript发送邮件的方式?怎么使用JavaScript发信? 无论是用户反馈、联系表单还是自动通知,前端触发的邮件发送功能都能极大地提升用户体验。AokSend将详细介绍如何通过JavaScript发送邮件,实现前端触发的邮件发送功能。 JavaS…

跨站请求伪造(CSRF)漏洞详解

免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法…