4. HFP协议详解(下):呼叫控制AT命令与音频连接
本章深入HFP协议中与车载免提通话直接相关的核心机制:呼叫控制AT命令集、音频连接建立(SCO/eSCO)以及三方通话与呼叫等待处理。掌握这些内容是实现稳定、高质量车载蓝牙通话的关键。
4.1 呼叫控制AT命令(ATD/ATA/ATH)
HFP协议中,车载设备(HF)通过AT命令向手机(AG)发起或控制通话。以下是三个最核心的命令:
| AT命令 | 功能 | 典型场景 | AG响应示例 |
|---|---|---|---|
ATD>number<; |
拨打电话 | 用户通过车载界面输入号码并点击拨号 | OK 或 +CLCC: ... |
ATA |
接听来电 | 有来电时,用户按下车载接听键 | OK |
ATH |
挂断电话 | 通话结束或用户主动挂断 | OK |
关键细节: ATD命令必须以分号结尾(
ATD13800138000;),否则AG可能将其视为数据呼叫而非语音呼叫。ATA和ATH无需额外参数。
4.1.1 拨号流程与状态机
车载HF发起拨号时,需遵循以下AT命令交互序列:
- HF发送:
ATD13800138000; - AG响应:
OK(表示拨号已发起) - AG主动上报:
+CLCC: 1,1,4,0,0,"13800138000",129(呼叫进行中) - AG主动上报:
+CLCC: 1,0,0,0,0,"13800138000",129(呼叫已接通) - HF处理:收到接通状态后,HF应准备建立SCO音频连接。
开发建议: 不要仅依赖ATD的
OK响应来判断通话建立成功,必须监听+CLCC上报的呼叫状态变化,才能准确获知对方是否已摘机。
4.2 音频连接建立:SCO与eSCO
通话的音频数据不通过RFCOMM传输,而是通过独立的SCO(同步面向连接)链路传输。eSCO(增强型SCO)是其改进版本。
| 特性 | SCO | eSCO |
|---|---|---|
| 重传机制 | 无重传 | 有限重传(提高抗干扰能力) |
| 数据包间隔 | 固定(如3.75ms) | 可配置(如3.75ms/5ms/7.5ms) |
| 音频质量 | CVSD(64kbps) | CVSD或mSBC(64kbps,支持宽带语音) |
| 适用场景 | 传统窄带通话 | 高清语音(WBS) |
4.2.1 SCO/eSCO连接建立流程
当AG上报呼叫已接通(+CLCC状态为0)后,HF应主动发起SCO/eSCO连接请求。流程如下:
- HF发送:
+BCS: 1(选择mSBC编码,用于宽带语音) - AG响应:
OK - AG发送:
+BCS: 1(确认编码) - HF发送:
AT+BCC(请求建立SCO/eSCO连接) - AG响应:
OK,随后底层蓝牙协议栈开始建立SCO/eSCO链路。 - 链路建立成功:HF和AG之间开始传输音频数据。
常见问题: 如果HF在呼叫接通后未及时发起
AT+BCC,AG可能会超时并自动挂断通话。建议在收到+CLCC接通状态后立即触发SCO连接请求。
4.3 三方通话与呼叫等待
HFP协议支持多方通话管理,包括呼叫等待(Call Waiting)和三方通话(Three-Way Calling)。车载HF需要处理以下场景:
4.3.1 呼叫等待处理
当用户在通话中,又有新来电时,AG会发送+CCWA通知:
+CCWA: "13800138001",128,1
参数说明:
- 号码:等待呼叫的来电号码
- 类型:128(国际格式)或129(国内格式)
- 线路:0或1
HF收到此通知后,应通过UI提示用户有新的来电等待,并提供以下操作选项:
| 用户操作 | HF发送命令 | 效果 |
|---|---|---|
| 接听新来电,保持当前通话 | AT+CHLD=2 |
新来电接通,当前通话保持 |
| 挂断当前通话,接听新来电 | AT+CHLD=1 |
当前通话挂断,新来电接通 |
| 拒绝新来电 | AT+CHLD=0 |
新来电被拒绝 |
4.3.2 三方通话会议
当用户已有一个保持中的通话和一个激活中的通话时,可以发起三方通话(会议电话):
AT+CHLD=3
AG响应OK后,所有参与者将进入同一通话。HF需要管理以下状态:
- 激活通话:当前正在通话的参与者
- 保持通话:被暂时挂起的参与者
- 会议通话:所有参与者合并后的通话
状态管理要点: HF必须通过
+CLCC命令定期轮询当前所有呼叫的状态,以正确更新UI显示。会议通话中,+CLCC会返回多个呼叫条目,其中会议通话的方向字段为5(多方)。
4.4 本章小结
- AT命令:ATD(拨号)、ATA(接听)、ATH(挂断)是HFP呼叫控制的基础,必须正确处理响应和状态上报。
- SCO/eSCO:音频链路建立是通话质量的关键,eSCO通过重传机制提供更好的抗干扰能力,支持宽带语音(mSBC编码)。
- 三方通话:通过
AT+CHLD命令管理呼叫等待和会议电话,HF必须持续轮询+CLCC以维护准确的通话状态。
实战要点: 在集成HFP时,建议使用状态机管理通话状态,并实现超时重试机制(如SCO连接失败后重试2-3次),以提升用户体验和系统稳定性。