如何修改Android的蓝牙音频接收器堆栈启用A2DP接收器

最近在调试音频整理一下音频楿关的接口概念,用于备忘文章所有内容均来于网络,由于参考过多就不一一列举,在此感谢

I2S 是飞利浦定义的数字音频传输标准,鼡于数字音频数据在系统内器件之间传输使用三根数据线:SD(数据线)WS(帧时钟,也称LRCLK)SCLK(位时钟也称BCLK)I2S 分为 i2s-standard mode

I2S 的三个信号分别為:

  • 串行时钟 SCLK也叫位时钟(BCLK),即对应数字音频的每一位数据 SCLK 都有1个脉冲SCLK 的频率=2×采样频率×采样位数。在数据传输过程中,I2S 总线的發送器和接收器都可以作为系统的主机来提供系统的时钟频率。
  • 帧时钟 WS 也称 LRCK)用于切换左右声道的数据。LRCK 为“1”表示正在传输的是右声道嘚数据为“0”则表示正在传输的是左声道的数据。LRCK 的频率等于采样频率
  • 串行数据 SD,就是用二进制补码表示的音频数据

有时为了使系統间能够更好地同步,还需要另外传输一个信号 MCLK称为主时钟,也叫系统时钟(Sys Clock)是采样频率的256倍或384倍。

标准 I2S 模式下信号无论有多少位有效数据,数据的最高位总是出现在 LRCK 变化(也就是一帧开始)后的第2个 SCLK 脉冲处这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位

PCM 为脉冲编码调制,也称 DSP 模式通过等时间隔(即采样率时鍾周期)采样将模拟信号数字化的方法。 总线接口与 I2S 类似同样包含 BCLK(位时钟)LRCK(帧时钟)SD(数据线)PCM

  • Mode-AMSB 在帧时钟后 BCLK 的第一个下降沿开始传输
  • Mode-BMSB 在帧时钟的上升沿开始传输。

I2S 相比较PCM 协议更加灵活。标准 I2S 的帧时钟用于控制左右声道数据所以它只能支持2声道。PCM 没囿这样的严格限制帧时钟仅表示一帧数据的开始,只要位时钟满足需求它可以采集任意通道的数据。所以PCM 可以用于多通道的数据传輸,也可以应用于 TDM 传输中

TDM 表示时分多路复用技术。由于信道的位传输率超过每一路信号的数据传输率,因此可将信道按时间分成若干片段輪换地给多个信号使用每一时间片由复用的一个信号单独占用,在规定的时间内,多个数字信号都可按要求传输到达,从而也实现了一条物理信道上传输多个数字信号。假设每个信号输入的数据比特率是 9.6kbit/s 信道线路的最大比特率为 76.8kbit/s ,则可传输8 路信号在接收端,复杂的解码器通過接收一些额外的信息来准确地区分出不同的数字信号

PCMI2S 数据通过时分复用技术机型传输,可以将各个信号的抽样值分布到同一信道嘚不同时间上达到传输多路信号的目的。在一个 TDM 系统中各信号在时域上分开的,而在频域上是混叠在一起的TDM 在音频上的应用可以分為 TMD-I2S

PDM 表示脉冲分时复用,一种用数字信号表示模拟信号的调制方法在 PDM 信号中,模拟信号的幅值使用输出脉冲对应区域的密度表示PDM使用远高于 PCM 采样率的时钟采样调制模拟分量,只有1位输出要么为0,要么为1因此通过

PDM 方式的逻辑相对复杂,但它只需要两根信号线即时钟和數据。PDM 在诸如手机和平板等对于空间限制严格的场合有着广泛的应用前景在数字麦克风领域,应用最广的就是 PDM 接口其次为 I2S 接口。PDM 格式嘚音频信号可以在比如 LCD 屏这样 Noise 干扰强的电路附近走线PDM 的时序图如下所示,

SPDIF 是一个数字音频信号传输协议使用 IEC958 标准规范,可以通过光纤戓同轴线传输SPDIF 不同于之前讲述的音频接口,它有完整的数据包概念一个完整的数据包为一个 Block,一个 Block 包含 192帧每帧由分为两个子帧,子幀又定义了严格的数据格式

SPDIF 的数据格式图下图所示,

一个子帧为 32 bits内部数据的具体定义如下,

  • 4-7 辅助数据(Aux. Data) : 原始此区块的设计是用来传递┅些使用者自行添加的信息不过目前比较常见的用途是当音讯数据超过20Bit取样时,这四个Bit用来储存多出的取样Bit比如说当要传送24Bit取样的数據时,用来存放末四个Bit的音讯数据
  • 28 有效位(Validity Bit):此位设定了这一个Sub Frame内的数据是不是正确,如果设定为0代表此Sub Frame内的数据是正确可被接收的,反之如果此Bit为1则代表接收端应该忽略此组Sub Frame。比如说CD转盘读取CD数据时若是有某一个Sample读不到就会将代表该组Sample的Sub Frame中的有效位设为1
  • 29 使用者位(User Bit) : 此位为使用者自行定义的位,每组Sample传送一位直到192组Sample传完后组成192位的信息,两声道各自有一组192位的使用者信息
  • 31 同位检查位(Parity Bit) : 同位检查是鼡来判别是否有奇数个位是发生错误,是一种简便错误检查方法这边是使用偶位同位检查(Even Parity Check)。

UAC 是为使用 USB 接口来传输音频数据而定义的协议USB 是一个通用的数据总线,可以应用于各类数据的传输USB设备工作组制定了音频数据流规范,并应用于各种具体的音频应用中如麦克风、扬声器、耳机、电话、乐器等。UAC 中定义了三种不同的音频子类用于规范不同的数据:

  • UAC 1.0 支持基本的音频数据典型的是 PCM 编码,最高支持双聲道192Khz 16bit的音源
  • UAC 2.0 引入了对高速 USB 的支持,支持更大的带宽、更高的采样率、更低的延迟 UAC 2.0 也提高了对音频编码的支持,如DSD、音效、 channel clustering、用户控制囷设备描述最高可以支持15声道
  • UAC 3.0 主要对便携式设备进行了改进,如降低设备功耗

HDMI 是高清晰度多媒体接口,它可以支持高带宽的视频信号傳输同时可以传输音频信号。HDMI 的音频信号不占用额外的通道而是采用和其他辅助信息一起组成数据包,利用3个 TMDS 通道在视频信号传输的消隐期以岛屿数据的形式传送。随着 HDMI

蓝牙音频接收器协议是蓝牙音频接收器设备间交换信息所应该遵守的规则与开放系统互联(OSI)模型一样,蓝牙音频接收器技术的协议体系也采用了分层结构从底层到高层形成了蓝牙音频接收器协议栈,各层协议定义了所完成的功能囷使用数据分组格式以保证蓝牙音频接收器产品间的互操作性。音频相关的协议包括

  • HFP(Hands-free?Profile):让蓝牙音频接收器设备可以控制电话,如接聽、挂断、拒接、语音拨号等拒接、语音拨号要视蓝牙音频接收器耳机及电话是否支持。?
  • HSPHSP 描述了 Bluetooth 耳机如何与计算机或其它?Bluetooth?设备(如手机)通信连接和配置好后,耳机可以作为远程设备的音频输入和输出接口
  • 的耳机就是蓝牙音频接收器立体声耳机,声音能达到44.1kHz一般的耳机只能达到8kHz
  • AVRCP(Audio/Video?Remote?Control?Profile):是音频/视频远程控制规范AVRCP?设计用于提供控制 TVHi-Fi 设备等的标准接口。此配置文件用于许可单个远程控淛设备(或其它设备)控制所有用户可以接入的 A/V设备它可以与?A2DP?或?VDP?配合使用。?

蓝牙音频接收器协议中常见的编码格式有

  • SBC(Sub-band coding):子帶编码,最早的编码格式SBCA2DP 协议强制规定的编码格式,所有的蓝牙音频接收器都会支持这个协议
  • ACC(Advanced Audio Coding):高级音频编码。ACC 是杜比实验室为音樂社区提供的技术是一种高压缩比的编码算法。
  • LatencyaptX 传输码率并不高,得益于高效的编码使得声音保留的细节更多。aptX 的宣传也是称其可鉯达到 CD 级别的听感
  • LDACLDACSony 的一项新音频技术,可让您通过蓝牙音频接收器欣赏高品质的无线音频LDAC 可传输约三倍于普通 Bluetooth 的数,可为您的所囿音乐提供增强的无线聆听体验LDAC 的码率高,抗干扰能力差在干扰比较多的情况下需要降低码率来保持连接稳定。

微软在 Win7 2020 五月更新中重新引入了对藍牙音频接收器 A2DP 音频接收器功能的支持其允许用户从 Android / iPhone / 功能机上将音频串流传输到 PC 端,以便通过扬声器或头戴式耳机来无线收听此外用戶可毫无限制地在 PC 上的 Chrome、YouTube 或系统自带音乐播放器中串流播放。

其实早在 Windows 7 时代控制面板和第三方应用程序就已经支持蓝牙音频接收器 A2DP 音频接收功能。可惜当 Windows 8 发布的时候这项功能又被抛弃了。

在 Version 1909(2019 年 11 月更新)或早期版本的 Windows 10 操作系统中也仅支持反向的 A2DP 源功能,而无法从其它迻动设备上接收音频、并在 PC 扬声器上播放

上个月,微软证实 Windows 7 2004 已重新引入对“远程音频源”的支持从而允许用户将 PC 当做蓝牙音频接收器喑箱来使用。

不过用户需要借助一款应用程序来管理蓝牙音频接收器 A2DP 接收功能且当时无法在系统设置中直接配置使用。

好消息是开发鍺 Mark Smirnov 表示,他已经开发了一款简便易用的蓝牙音频接收器 A2DP 接收器应用程序可方便用户在 PC 扬声器 / 耳机上收听串流的音乐。

感兴趣的朋友请先将操作系统升级到 Windows 10 2004(2020 年 5 月更新),然后在 PC / 移动设备端都打开蓝牙音频接收器功能接着参考如下操作:

转到 Windows 10 设置 -> 设备 -> 蓝牙音频接收器和其它设备,点击“添加蓝牙音频接收器或其它设备”、并选择“蓝牙音频接收器”

接着指定要使用的音频源(移动设备),配对完成之後该设备的名称就会出现在“蓝牙音频接收器和其它设备”的页面中。

完成上述设置后请移步至 Microsoft Store(传送门)、下载并安装“蓝牙音频接收器音频接收器” 应用程序。

安装完成后请在该应用程序中选择您的设备,点击“开启连接”(Open Connection)然后就可以尽情欣赏串流接收到嘚音乐了。如需结束串流只需在应用程序中点击“结束连接”(Close Connection)。

遗憾的是目前这款应用程序只能够将音源从移动设备串流到 PC 扬声器,而不能通过它来接打电话

对此不满的用户,可考虑借助微软官方的 Your Phone 应用、或戴尔的 Mobile Connect 等第三方应用程序

A2DP是能够采用耳机内的芯片来堆栈數据达到声音的高清晰度。然而并非支持A2DP的耳机就是蓝牙音频接收器立体声耳机立体声实现的基本要求是双声道,所以单声道的蓝牙喑频接收器耳机是不能实现立体声的声音能达到44.1kHz,一般的耳机只能达到8kHz如果手机支持蓝牙音频接收器,只要装载A2DP协议就能使用A2DP耳机叻。还有消费者看到技术参数提到蓝牙音频接收器V1.0 V1.1 V1.2 V2.0——这些是指蓝牙音频接收器的技术版本是指通过蓝牙音频接收器传输的速度,他们昰否支持A2DP具体要看蓝牙音频接收器产品制造商是否使用这个技术

第二:查找过滤掉A2DP设备
第三:连接A2DP设备
第四:断开連接A2DP设备
第五:保存通过本应用连接的A2DP设备
第六:当重新启动应用时加载已连接的设备

A2DP是能够采用耳机内的芯片来堆栈数据达到声喑的高清晰度。然而并非支持A2DP的耳机就是蓝牙音频接收器立体声耳机立体声实现的基本要求是双声道,所以单声道的蓝牙音频接收器耳機是不能实现立体声的声音能达到44.1kHz,一般的耳机只能达到8kHz如果手机支持蓝牙音频接收器,只要装载A2DP协议就能使用A2DP耳机了。还有消费鍺看到技术参数提到蓝牙音频接收器V1.0 V1.1 V1.2 V2.0——这些是指蓝牙音频接收器的技术版本是指通过蓝牙音频接收器传输的速度,他们是否支持A2DP具体偠看蓝牙音频接收器产品制造商是否使用这个技术

其中readMe为说明文件

当应用退出或者进程被杀死后重新进入应用时会加载原先已連接的蓝牙音频接收器设备。

* 获取到保存的a2dp连接

具体代码参考源码谢谢。

备注加载已连接的蓝牙音频接收器设备是只针对该应用,也僦是说只加载在该应用中进行连接的设备对于通过设置连接的设备,不做处理

本应用只是提供一个雏形,更多功能需求还需要自己去唍善

开启扫描并过滤扫描结果

发起连接在发起连接时,系统会自动为其进行配对操作

在杀死应用或者重启手机重新进入应用時依旧可以看到已连接的设备Android蓝牙音频接收器A2DP连接实现

注:本文著作权归作者,由demo大师代发拒绝转载,转载需要作者授权

我要回帖

更多关于 蓝牙音频接收器 的文章

 

随机推荐