Android 蓝牙 A2dp 播放音乐流程再探究 --- setDeviceConnectionStateInt(二)

本文深入探讨Android蓝牙A2DP协议在播放音乐时的流程,特别是当需要同时从蓝牙耳机和扬声器输出时的duplicate策略。通过分析源码,解释了如何创建和管理DuplicatingThread,以及如何在audioflinger层实现数据复制到两个输出缓冲区,确保声音同步播放。

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

同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。

一、概述

我们来看下a2dp下面的播放场景吧。a2dp是蓝牙用来播放音乐的协议,正常情况下,播放音乐只从蓝牙耳机端输出,但是如果是来个通知类的声音,那策略的选择会同时从蓝牙耳机和speaker同时输出,由于speaker和蓝牙是采用的不同硬件设备输出,所以它在hal层应该是对应两个so的。所以,谷歌针对这种场景,继承PlaybackThread,实现了DuplicatingThread,这样就需要在audioflinger这边实现将数据拷贝到两个缓冲区的操作了。

在android下,对于链接蓝牙的音乐播放的话,按照我们的认知,肯定得从蓝牙出来,这是毋庸置疑的,也合乎常理,这个和一般的音乐播放一样,只是需要单纯的选择到对应的设备通过一个output即可完成播放。但是有一些特殊的场景,需要声音即从蓝牙耳机输出,又从设备的speaker输出,这个时候对

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

短距WCN协议开发分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值