A2DP

Android系统中,应用程序只能看到AudioSystem这个接口,AudioFlinger是一个实现类,主要用于音频选路和PCM包的混音与重采样,并把PCM数据包传送给底层。AudioFlinger在所有进程中只有一个实体,其他进程如需要访问通过Binder进程间通信的方式进行访问。
  AudioHardware是一层硬件抽象层,主要负责音频数据的收发与控制。AudioFlinger把他看成实际的硬件。当音频路径设置成A2DP时,通过Bluetooth模块收发数据,通过立体声蓝牙耳机即可听到高保真音乐。
  AudioAccessory主要用于事件的监听,并把这些事件发送给AudioFlinger模块进行音频路径的重新设定。当蓝牙立体声耳机匹配之后,AudioAccessory会从kernel中获得相应的信息(监听HCI层的事件),然后把音频路径配置成A2DP模式,这样音频数据就只会发送到蓝牙耳机当中,如有必要,也可以设置扬声器的音频解码芯片转入休眠状态。
  当有音频数据播放时,由于SBC音频压缩的开源代码只能压缩512bytes大小的数据因此,AudioHardware每次发送下来4096Bytes,然后把这4096个字节分割成N个512Bytes的小块,放入一个队列当中。经过SBC压缩之后变成113bytes。另外一个线程会每次对SBC压缩好的包进行再封装,封装成一个标准的A2DP packet,然后再把这样的A2DP packet移动到发送队列当中。
  最后设定好软件定时器,每隔一段时间回发送一个A2DP包。这个时间间隔是SBC编码期间返回的推荐值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值