A2DP:蓝牙耳机回连失败(播放音乐过程中,打开之前已配对的蓝牙耳机进行回连,耳机与测试机的媒体音频连接失败)

本文详细分析了在播放音乐过程中,已配对蓝牙耳机回连时媒体音频连接失败的问题。通过HCILog分析,揭示了transcationID不一致导致的A2DP流程异常,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:播放音乐过程中,打开之前已配对的蓝牙耳机进行回连,耳机与测试机的媒体音频连接失败。

操作步骤:
1,手机成功连接蓝牙耳机
2,关闭蓝牙耳机
3,手机本地播放音乐
4,打开蓝牙耳机
5,手机能自动连接上蓝牙耳机;但是状态是“无媒体”,手机端音乐停止

HCI Log分析:
1.start reqstart rsp 的 transcation ID 不一样, AVDTP 的 流程不会处理 transcation ID 不一样的结果 ,所以上层超时异常断开A2DP。(Transcation Label 不一样)
2.手机和耳机都在做 start req ,手机 reject了耳机的req,耳机不响应。所以上层超时异常断开A2DP。(Field Truncated or Not Present

问题原因:

1.收到AVDTP的data时,发现transID不一样, event赋值为AVTP_EVENT_RX_BAD_TRANS_ID
2. callback 不会处理AVTP_EVENT_RX_BAD_TRANS_IDevent

总结原因:

耳机连接之前有音乐在播放,耳机发起连接上HFP,A2DP后, 手机发起 A2DP start 音乐,对于一些IOT的耳机设备,也会马上发起 A2DP start 。所以也就是手机和耳机设备同时发起A2DP start ,撞到耳机IOT问题。

修改方法:

当手机知道耳机发起了A2DP连接后,会延时发起 A2DP start,等耳机的 start request先进来。
bt_a2dp_hdl.cstoreDevInfoFormOpenCnf 下,把 is_opened_by_peer_dev 的赋值注释掉。

// (bt_a2dp_app.a2dp_app_dev[i].is_opened_by_peer_dev == EAL_FALSE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值