连接苹果耳机异常弹窗问题分析
问题描述
1.设备已烧录版本
2.设备已与苹果蓝牙耳机连接成功
【测试步骤】
1.进入蓝牙设置页面,在“已配对”列表中,点击苹果耳机后面的设置图标,点击“取消配对”
【预期结果】
1.苹果耳机蓝牙设备名称在“已配对”列表中消失,无异常提示弹窗
【实际结果】
1.设备弹出“配对失败”弹窗
问题分析
通过蓝牙hci 日志分析,
从14:25:08.850开始 首次创建蓝牙连接。
14:25:18.474开始断开了所有的l2cap层连接。
14:25:20.361,用户重新点击连接。
14:25:22.966 用户点了取消配对。
14:25:24.430蓝牙acl 重新连接,打开了avrcp连接
14:25:756 认证失败。弹出配对失败。
log异常
从log看,存在多处异常。
1、14:25:18.474开始断开了所有的l2cap层连接,断开之后,应该马上断开acl链路。因为没有profile 业务的连接。
2、14:25:24.430蓝牙acl 重新连接,打开了avrcp连接,这个地方不应该自动发起连接。
js代码分析
弹出异常弹窗是由于下面接口
检测到
cancelPairFlag
变量发生改变。并且if 条件满足。
controlPairing
发生默认是1
赋值接口
通过bond状态。
第一个状态满足。
pairDialog 不=null。
所以问题是下层,为啥传递绑定状态0;
下层分析:
从avrcp ct流程看,
14:25:20.925 开启了avrcp 的连接。开启一个4s定时器。导致连接断开之后,又重新连接。
修改方案:
弹窗问题:
做取消配对之后,需要关闭avrcp 4s定时器。
风险:取消配对属于gap层,无法管理avrcp 的profile。
acl无法断开问题:
方案1:
仿照安卓,打开sdp,查询一个sdp属性之后,没有其他request,直接断开sdp 的l2cap连接而不是延时4s。
风险:存在时序问题。打开sdp查询完毕之后,在第一个profile 还没有连接上,可能会导致acl 断开,表现现象为连接不上。
方案2:
沿袭原来blueh sdp的流程设计,每次断开一个profile 之后,断开已存在的sdp 的l2cap 连接。
更多推荐
所有评论(0)