蓝牙Hands-free和Stereo两种模式

news/2024/12/5 11:51:09/

一、Hands-free和Stereo模式简介

        电脑连接上蓝牙耳机(音响)之后,点击Windows桌面扬声器然后点击播放设备会看到两个蓝牙耳机对应的2个设备,分别是XXX Hands-Free AG Audio以及XXX Stereo。

        Hands-Free免提设备,相当于“免提模式(Hands-Free Profile,HFP)”或者"耳机模式(headset profile,HSP)",最初用于通话设计优化语音,具备双向单声道,这种模式下响应频率有限。免提模式(特别是HSP)为优化耳机耗电设计,更省电。此模式下可以同时进行播放音乐(音频输出)和录音通话(音频输入)操作。

        Stereo立体声设备,在蓝牙术语中被称为“高级音频分发配置文件(Advanced Audio Distribution Profile)”,缩写为A2DP,针对单向传输高质量的双声道立体声设计,音质更高,通常用于播放立体声音乐。此模式下只能进行音频输出操作,当通过HFP协议进入语音通话,通过A2DP的音频流将被暂停,直到免提语音通话断开,这也就是“win10播放音乐时进行录音,音乐播放没有声音,要么只能进行音频输入,要么只能进行音频输出”的原因。Windows系统默认使用Stereo设备,可手动更改。

二、两种协议架构

1、Hands-Free协议架构

        支持HFP的蓝牙设备定义了免提单元(HF)和音频网关(AG)角色。其中,免提单元(HF)角色用于控制输入和接收来自音频网关角色的设备输出,例如便携式导航设备(PND)。音频网关(AG)角色作为音频网关的设备,用于输入和输出,例如手机。一个Windows嵌入式NavReady驱动的设备只支持免提单元(HF)角色。

        为了通过使用音频网关设备进行免提语音呼叫和接收,Windows嵌入式NavReady设备对一个设备进行配对,然后搜索配对设备上的服务发现配置文件(SDP)记录,以确定该设备是否支持HFP。如果它确实支持HFP, Windows嵌入式NavReady驱动的设备将承担免提单元(HF)的角色,以便通过蓝牙连接进行和接收语音呼叫。HFP服务通过蓝牙HFP连接与配对的手机通信,发送电话命令,接收状态更新,并从配对的手机流语音数据到免提设备。

        Hands-Free协议架构如下图所示:

2、A2DP协议架构

        A2DP协议允许创建一个蓝牙通道,通过该通道实现高级音频数据从一个支持蓝牙的设备流到另一个支持蓝牙的设备。字面意思,A2DP协议(Stereo设备)仅支持音频流传递到蓝牙设备输出。

支持A2DP协议的蓝牙设备定义了源(SRC)和Sink (SNK)两个角色。当一个设备是数字音频数据的源并将流发送给SNK时,它就是SRC,例如便携式导航设备(PND)。当设备接收到来自SRC的数字音频流时,它就是SNK,例如车载媒体播放器。Windows嵌入式NavReady设备只支持源(SRC)角色。

        Windows嵌入式NavReady驱动的设备是SRC,它在内存中存储音频数据。如要将音频数据流传输到SNK设备,需要Windows嵌入式NavReady驱动的设备对蓝牙设备进行配对,然后搜索配对设备上的服务发现概要(SDP)记录,以确定该设备是否支持A2DP。如果它确实支持A2DP,Windows嵌入式NavReady驱动的设备将采用SRC角色,并使用音频压缩管理器(ACM)通过蓝牙连接发送音频数据至蓝牙外设SNK。

        Windows嵌入式NavReady驱动的设备包括一个波形音频驱动程序,用于音量控制、管理音频线路以及播放数字音频文件。为了将音频数据路由到远程输出目的地,SRC设备可以使用A2DP协议通过蓝牙链接将音频数据流传输到支持单声道或立体声音频输出功能的SNK设备,例如车载蓝牙设备。通过使用A2DP,音频数据被压缩成合适的格式,从而有效地利用蓝牙链路上的带宽。SNK设备使用A2DP接收音频数据,然后使用其媒体播放器和音频驱动程序将其发送到音频输出设备,如车载立体声扬声器。A2DP依赖于蓝牙堆栈中的通用访问配置文件,也使用音频/视频分发传输协议来处理音频数据流。

        A2DP协议架构如下图所示:

        如果用户发起一个交互,将一个新的启用蓝牙的设备连接到当前连接到另一个配对设备的配置文件端口(HFP或A2DP),以前连接的设备将被断开,新的设备将被连接。如果通过HFP进入语音通话,通过A2DP的音频流将被暂停,直到免提语音通话断开。

三、写在最后

1、Windows蓝牙革新

        Windows10蓝牙这块存在比较多的问题,根据微软工作者透露,Windows 10 20H2后续版本将会有比较大的更新。目前最新发布的Windows 11,针对连接的单个蓝牙音频设备,在桌面右下角扬声器中的播放设备列表、声音面板中的播放和录制面板中均显示一个设备,不再分别显示Hands-Free AG Audio和Stereo设备,且已实现根据音频场景作Hands-Free AG Audio和Stereo协议设备的自动切换。用户通过蓝牙耳机播放音乐过程中也能进行录音操作,从这一点来说,用户不用再自行根据场景需要切换蓝牙播放设备,一定程序上提升了用户体验。

2、参考资料

1、联合开发网

2、蓝牙官网

3、Overview of Hands-Free Profile (Hands-Free Unit Role) | Microsoft Docs

4、Overview of Advanced Audio Distribution Profile (A2DP) (Source Role) | Microsoft Docs

本文内容已搬至公众号,欢迎关注◡̈ ☽⋆

 


http://www.ppmy.cn/news/647551.html

相关文章

【小工具】自定义键盘快捷键切换音频播放设备、快速开关切换静音

场景 宿舍电脑的音频设备有两个,一个耳机,一个小扬声器。一般的切换设备的操作方式,是用鼠标去点击右下方任务栏的声音图标进行切换。 为了从耳机切换成扬声器,需要点击至少3下鼠标,如果在全屏状态下甚至需要切到桌面…

win11耳机和扬声器怎么分开控制音量?

win11耳机和扬声器怎么分开控制音量? 有时候有这种需求,在办公位置工作听耳机,拔掉耳机后,扬声器需要自动禁止声音 1,搜索并打开Realtek Audio Console 2,点击左下角“设备高级设置”,播放设备…

计算机主机的输出设备,电脑怎么切换输出设备

输出设备(Output Device)是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统…

Golang 列表list

Golang 列表 list 详解 在 Golang 中,list 是一个双向链表实现,可以用来存储任意类型的元素。本文将对 list 进行详细的介绍,包括创建、初始化、添加元素、删除元素、遍历等操作,并提供相应的示例代码。 list 的创建和初始化 在…

驱动的实现流程(嵌入式学习)

驱动的实现流程 0. 驱动的概念1. 驱动程序实现的功能2. 驱动的实现流程 0. 驱动的概念 驱动(Driver)是指 为硬件设备或软件组件提供接口和控制功能的软件模块。 它充当操作系统与设备之间的桥梁,使得操作系统能够与设备进行通信、管理和控制…

微信小程序-授权登录退出与缓存

我们的项目开发多多少少的都会用到用户的一些信息,比如头像,昵称,性别等。而这些信息的获取,小程序也为我们提供好了方法。 1,认识wx.getUserProfile方法 对应的文档:https://developers.weixin.qq.com/miniprogram/d…

退出登录功能

js代码&#xff1a; $(".logout").click(function() {if (confirm(系统提示&#xff0c;您确定要退出本次登录吗?)) {location.href ctx /logout;}}); jsp代码&#xff1a; <a href"#" class"logout">安全退出</a> java代码&…

微信小程序退出登录取消授权

退出登录 首先&#xff0c;最近因为要做微信小程序&#xff0c;所以了解了一下相关文档知识。 微信小程序退出登录功能想要取消用户授权这个在微信开发文档上有写&#xff0c;是不能取消的。 以下是截图 其次&#xff0c;根据自己项目经历&#xff0c;发现在获取地理位置等授权…