蓝牙电话之HFP-电话音频

article/2025/6/19 14:45:58

蓝牙电话之HFP协议中的电话音频

蓝牙技术通信的内容多种多样,其中音频部分包含媒体音频和电话音频。

媒体音频:播放蓝牙音乐的数据,这种音频对质量要求高,数据发送有重传机制,从而以l2cap的数据形式走ACL链路。编码方式有:SBC、AAC、APTX、APTX_HD、LDAC这五种编码方式,最基础的编码方式是SBC,支持蓝牙多媒体播放的设备必须支持该编码方式,编码质量最好的是LDAC。编码方式的选取需要蓝牙连接设备间的互相协商确定。

电话音频:蓝牙通话过程的语音数据,这种音频对时效性有高要求,一般通过特殊的SCO或eSCO链路传输数据。编码方式有:CVSD、mSBC。最基础的编码方式为CVSD,免提蓝牙设备都需支持该编码方式,支持宽带语音的设备可选mSBC编码数据。
在这里插入图片描述

  • CVSD:该编码方式的数据传输使用 SCO 或 eSCO 链路。链路的选取是根据本端 Controller是否支持 Enhanced Setup Synchronous Connection指令来决定的,如果支持该命令则创建语音音频链路时使用 eSCO,否则创建 SCO 链路。
  • mSBC:该编码方式的数据传输只能使用 eSCO 链路。

音频链路 SCO 或 eSCO 创建成功后,蓝牙系统会以 AUDIO_STATE_CHANGED 的广播通知注册过的应用,并且HF侧的蓝牙芯片会将接收到的语音数据通过PCM接口送入 audio 系统,那系统的 audio 模块是如何操作避免多音源输出呢 ?

这其实还是和蓝牙电话应用密切相关的,蓝牙电话收到音频链路创建成功的广播后通过AudioManager.requestAudioFocus() 申请到系统的音频焦点后,audio 模块会根据申请焦点的 stream type 判断其级别,高级别的音源可以打断低级别的音源(比如:听音乐时打电话,会先暂停掉音乐)。蓝牙电话还需要通过AudioManager.setMode() 接口通知 audio 底层打开通话通道,从而播放出通话语音。

蓝牙电话一般还会有个电话静音功能,开启静音功能后,本端可以听到对方的语音,但对方听不到本端的语音,这样一个功能其实只需要将本端的收音设备给静音掉就可实现。AudioManager.setMicrophoneMute() 设置 true,将 Mic 静音。

由于蓝牙电话语音的传输途径为:phone Audio -> PCM -> AG基带 -> HF基带 -> PCM -> Audio,以及反方向。那么语音数据都是在底层传输的,上层基本涉及不到,从而开发蓝牙电话时获取语音数据就显得尤为困难,但方法也是有的。

  1. 在音频数据传输的各个节点保存数据文件(如 PCM 输入输出),使用音频分析软件查看
  2. 蓝牙抓包工具抓取通话的空口数据(如 Ellisys 或 Frontline 工具)

电话音频的分析就先到这里,后续有新的想法我会再更新相关文章的,感兴趣的小伙伴欢迎私信留言一起讨论。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述


http://chatgpt.dhexx.cn/article/FIJVG6lM.shtml

相关文章

VSCode 按下tab键自动补全功能失效

问题描述:标签自动补全插件已经安装,某天按下tab键自动补全标签的功能突然失效了。解决方法: 1、找到路径 file > Preferences >settings 2、搜索tabs,选择Extensions里面的Emmet,将复选框的√打上就ok啦!

javascript 按下回车键触发input表单的切换(enter键代替tab键功能)

本来是想用js代码去模拟键盘按下来实现该功能&#xff0c;但是没有实现到。后来想到一种比较笨的方法。局限性是只能这些表单元素只能在同个层面下才能切换。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><m…

sublime text3 tab键功能失效

选择首选项 -> 快捷键设置 出现下面编辑页 在右边添加下面一些设置&#xff08;记得要用逗号与前面内容分开&#xff09;&#xff1a; { "keys": ["tab"], "command": "reindent", "context":[{ "key": "…

计算机键盘上的2个定位键,电脑键盘上Tab 键的神奇之处!(用途详解)

下面通过实例来详细解释下&#xff1a; 假设“D:\cfan”路径下&#xff0c;有文件夹&#xff1a; a、 ab &#xff0c;有文件&#xff1a; abc.txt &#xff0c; ac.txt 。依次点击“开始→运行”输入“cmd”&#xff0c;按下回车打开命令提示符。先输入“D:”&#xff0c;回车…

微型计算机上的tab作用,TAB键有什么用处

Tab键对大家来说都是比较熟悉吧。比如写文章时开头要空两格就可用这个键。但是它还有什么特殊功能呢&#xff0c;不一定是大家都知道的。下面小编来详细的介绍下几种tab键的常见功能 tab键作用一&#xff1a;改变焦点 聚焦到下一个按钮&#xff0c;输入框或者链接等。例如&…

计算机键盘上的tab键是什么键,电脑Tab键有什么用处

电脑Tab键有什么用处 Tab键对大家来说都是比较熟悉吧。比如写文章时开头要空两格就可用这个键。但是它还有什么特殊功能呢&#xff0c;不一定是大家都知道的。下面小编来详细的介绍下几种tab键的常见用处&#xff1a; tab键作用一&#xff1a;改变焦点 聚焦到下一个按钮&#x…

电脑Tab键有什么功能?6个实用功能总结!

我最近对电脑的键盘很有兴趣&#xff0c;想了解一下各个键有什么特殊的用法。今天正好看到Tab键&#xff0c;想问下大家知道电脑的Tab键有什么比较好用的功能吗&#xff1f; 在电脑键盘上&#xff0c;Tab键是一个常见的键&#xff0c;它具有多种功能和用途。无论是在文本处理、…

tab键功能

tab 键可以实现命令及路径等补全&#xff0c;提高输入效率&#xff0c;避免出错 tab键可以命令补全&#xff0c;还有路径、文件名补全。 命令补全&#xff1a; 在Linux命令行下&#xff0c;输入字符后&#xff0c;按两次Tab键&#xff0c;shell就会列出以这些字符打头的所有…

计算机键盘上的tab键是什么键,键盘Tab键有什么作用?

Tab键——跳格键&#xff0c;大家都比较熟悉了吧&#xff0c;但是到底它有什么特殊的使用功能&#xff0c;却未必是大家都知道的哦。今天就将Tab键的几种使用功能进行了整理&#xff0c;大家可以参考学习学习。 1、跳格。当我们在网页输入表单的时候&#xff0c;在一个输入控件…

电脑Tab键有什么用

Tab键对大家来说都是比较熟悉吧。比如写文章时开头要空两格就可用这个键。但是它还有什么特殊功能呢&#xff0c;不一定是大家都知道的。下面我来详细的介绍下几种tab键的常见用处&#xff1a; tab键作用一&#xff1a;改变焦点 聚焦到下一个按钮&#xff0c;输入框或者链接等…

电脑Tab键有什么功能?分享Tab键的6个妙用

Tab键tabulator key 的缩写&#xff0c;意思是跳格键。基本用法是可以用来绘制无边框的表格&#xff0c;还可以在单词间留下间隔&#xff0c;一般等于八个空格的长度。但是您知道电脑Tab键有什么功能吗&#xff1f;以下一些关于Tab键的使用和功能的介绍&#xff0c;希望这些可以…

matlab EOF程序

% eof第一模态图用变量eof的第一列&#xff0c;以此类推&#xff1b;相应的时间系数用pc第一行 clear clcx [2 6 1 5 2;9 4 0 5 4;12 2 55 9 10;4 55 78 2 13]; %原始数据&#xff0c;列为站点或格点&#xff0c;行为时间序列上的值 x(1,:) x(1,:) - mean(x(1,:)); x(…

C语言——EOF的用法——while(scanf(“%d“,num)!=EOF)

简介&#xff1a; EOF是一个计算机术语&#xff0c;为End Of File的缩写&#xff0c;在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。、 概念&#xff1a; 在C语言中&#xff0c;或更精确地说成C标准函数库中…

cat << EOF 什么意思?

cat <<EOF 什么意思&#xff1f; cat命令表示查看&#xff0c;而cat <<EOF命令表示将进行输入&#xff0c;直到以EOF终止符来结束输入&#xff08;最后的新行&#xff09;。EOF必须写在一行的头部&#xff0c;前面不能有制表符或者空格。如果结束符EOF前面有制表符…

【C语言中的EOF】零基础看懂EOF如何使用while(scanf(“%d %d”,a,b)感叹号=EOF)

&#x1f31f;前言 ✨如今我们努力奔跑&#xff0c;不过是为了追上那个曾经被寄予厚望的自己&#xff01; 【&#x1f47b;&#x1f47b;&#x1f47b;大家好&#xff0c;我是姜姜爱柚子&#xff0c;将在这里分享所学所得&#xff0c;如果有不正确的地方&#xff0c;希望大家多…

c语言中eof的作用,eof在c语言中表示什么

eof在c语言中表示文件结束符。在while循环中以EOF作为文件结束标志&#xff0c;这种以EOF作为文件结束标志的文件&#xff0c;必须是文本文件。在文本文件中&#xff0c;数据都是以字符的ASCII码值的形式存放的。 在C语言中&#xff0c;或更精确地说成C标准函数库中表示文件结束…

QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等

目录 一、理论基础 二、核心程序 三、仿真结论 一、理论基础 QPSK是英文Quadrature Phase Shift Keying的缩略语简称&#xff0c;意为正交相移键控&#xff0c;是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对…