Android TWS 实践 本文意图在音响设备(主要是耳机)上使用TWS(True Wireless Stereo)技术实现真正无线立体声播放,无线通信用蓝牙实现。 硬件由三部手机构成,分别作为播放器(Player)、左声道接收器(Left-AudioReceiver)、右声道接收器(Right-AudioReceiver)。
应用场景 播放器读取立体声WAV文件,在PCM码流中分别取出左右声道码,构成单声道PCM码流,通过蓝牙发送给左右声道接收器。
播放器 当与蓝牙设备相连时,播放的立体声音频信号通过蓝牙传递到外部设备上。如果使用手机上的各种音频播放器,只能向一台已绑定的接收器发送信号,对于左右声道独立接收的方案不适用。 因此需要开发能够实现一对多蓝牙传送的播放器。从蓝牙通信的角度来看,这个播放器应该是服务端。 理想化的方案是把立体声分解为左右两个声道,分别传送。 偷懒的方案是同时向左右声道接收器发送相同的立体声信号,在左右声道接收器中分别关闭对向声道,也能实现立体声播放。这个方案对蓝牙带宽和功耗是一种浪费,不打算采用。
左右声道接收器 接收播放器传送的蓝牙信号转换成立体声音频信号播放,播放时左声道接收机关闭立体声右声道,右声道接收机关闭立体声左声道。 检测设备是否支持蓝牙 判断当前设备的蓝牙是否处于开启状态 开启和关闭蓝牙功能 设置设备的可见性 查找并绑定设备 蓝牙传输数据 服务端 客户端
蓝牙连接协议中支持立体声的有A2DP、 可用的音频编码格式有SBC ACC APTX APTX-HD LDAC
第二方案 经过再三考虑,决定采用市面上多数TWS设备的方案,用两部手机模拟TWS耳机或音箱。 一部手机作为蓝牙TWS转发器兼左声道音箱(tws_transmitter),另一部手机作为右声道音箱(tws_receiver)。 问题点: 作为转发器用的手机需要同时具有接收和发送功能,估计音响厂家是用蓝牙硬件实现的。 目前我的方案是: 转发器用蓝牙接收播放器的立体声蓝牙信号,左右声道分离,左声道在转发器上播出,右声道经过WIFI直连发送给右声道音箱设备。
由于bluetooth a2sp sink模式没有开放,需要定制android并植入手机,因此放弃该项目,停止开发。2020-9-29