蓝牙音频传输协议(A2DP) 您所在的位置:网站首页 如何用耳机调节音量大小呢 蓝牙音频传输协议(A2DP)

蓝牙音频传输协议(A2DP)

#蓝牙音频传输协议(A2DP)| 来源: 网络整理| 查看: 265

文章目录 前言一、A2DP中的角色介绍二、绝对音量机制原理1.判断对端设备是否支持绝对音量2.音量等级介绍3.绝对音量交互流程 三、绝对音量机制应用-BES2500IU原生代码示例总结

前言

绝对音量是什么意思?

绝对音量(Absolute volume)是指在蓝牙音频传输中,设备之间通过协议来协商音量控制的方式。传统上,音量控制是由音频源设备(如手机、电脑等)来控制,音频接收设备(如耳机、扬声器等)只是根据音频源设备发送的音量指令来调整音量大小。但是,这种方式存在一些问题,例如不同的设备音量范围不同,无法实现设备之间的统一音量控制等。

为了解决这些问题,蓝牙SIG(Bluetooth Special Interest Group)提出了绝对音量协议,通过该协议,音频源设备和音频接收设备可以互相通信,协商并同步音量控制,从而实现设备之间的统一音量控制。绝对音量协议可以确保不同设备的音量控制方式相同,使得用户可以在不同设备之间无缝切换,同时也提高了音频传输的质量和稳定性

一、A2DP中的角色介绍

在A2DP(Advanced Audio Distribution Profile)协议中,有两个重要的角色:CT端和TG端,分别代表连接的主设备和从设备。

CT端(Source):CT端是指连接蓝牙音频源设备(如手机、电脑等)的主设备。CT端主要负责音频数据的传输和控制,包括音频数据的编码、传输和解码等。

TG端(Sink):TG端是指连接蓝牙音频接收设备(如耳机、扬声器等)的从设备。TG端主要负责音频数据的接收和播放,包括音频数据的解码和输出等。 在这里插入图片描述

在A2DP协议中,CT端和TG端通过蓝牙进行连接,并通过协议进行音频数据的传输和控制。CT端可以向TG端发送音频数据和控制指令,如音量控制、播放控制等。TG端则接收音频数据并进行解码和播放。通过A2DP协议,用户可以通过蓝牙连接手机、电脑等音频源设备和耳机、扬声器等音频接收设备,实现无线音频传输和控制。

二、绝对音量机制原理 1.判断对端设备是否支持绝对音量

以手机为例: 1.手机端先看AVDTP协议是否支持,从空中包看 如下图:与耳机建立连接时,手机端会通过SDP服务查询当前耳机是否支持绝对音量功能 在这里插入图片描述 Category 2: 官方解释是用于定义视频监视器或音频放大器的基本操作。 简单来讲,设备的基本操作,包括设备的开关、音量控制、亮度调节等都是由它决定是否支持 在这里插入图片描述

在这里插入图片描述 2.手机端看有无指令(set Absolute volume)交互来判断是否支持,从空中包看

注:不支持绝对音量设备 不会有指令下发 在这里插入图片描述

2.音量等级介绍

绝对音量用一个八位字节表示。顶部位(第7位)是为将来添加(RFD)保留的。 在这里插入图片描述

绝对音量的值以最大值的百分比指定。0x0表示0%。0x7F对应100%。对应蓝牙等级设置会以x%通知给到TG端设备。但是在实际的项目运用中,例如手机和耳机设备,一般都是只支持16or15个音量等级,这里就会涉及到一个音量换算的问题,原理都是把127个音量等级划分成对应的16阶or15阶音量百分比,以耳机项目示例(这里是将音量等级划分成16阶): 这里是将音量等级划分成16阶

3.绝对音量交互流程

SetAbsoluteVolume:SetAbsoluteVolume指令用于设置蓝牙设备的绝对音量。在A2DP协议中,传统的音量控制是由音频源设备(如手机、电脑等)来控制,音频接收设备(如耳机、扬声器等)只是根据音频源设备发送的音量指令来调整音量大小。而通过SetAbsoluteVolume指令,音频源设备可以向音频接收设备发送音量值,并要求设备将其设置为绝对音量。这样就可以实现设备之间的统一音量控制。

RegisterNotification:RegisterNotification指令用于注册事件通知。在A2DP协议中,音频源设备和音频接收设备可以通过RegisterNotification指令来注册一些事件,如音量变化、播放状态变化等。当这些事件发生时,音频接收设备会向音频源设备发送通知消息,以便音频源设备可以及时地做出相应的处理。

CT端与TG端消息交互如下: 在这里插入图片描述

三、绝对音量机制应用-BES2500IU原生代码示例

a.收到AVRCP CMD — EVENT_VOLUME_CHANGED 在这里插入图片描述 b.耳机端更新音量等级参数 在这里插入图片描述 根据CT端下发音量等级参数换算成对应的15阶或16阶耳机本地音量等级 在这里插入图片描述 c.根据本地音量等级 耳机更新本地音量衰减参数 在这里插入图片描述 HFP和A2DP使用不同音量衰减参数 在这里插入图片描述

在这里插入图片描述

总结

具体的绝对音量指令对应的功能显示,大家可以使用ellisys或者frontline等hci_log分析工具自行对应查看。对没有提及到的一些feature,有兴趣的兄弟可以去A2DP协议中自行查找,这一篇文章只是我在项目中碰到的绝对音量问题时的一些理解,希望对大家会有一些帮助,也欢迎大家指出问题。 ———————————————— 版权声明:本文为CSDN博主「无敌幸运七」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42176891/article/details/127284000



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有