BT A2DP Sharing 示例
源码路径:example/bt/a2dp_sharing
支持的平台
eh-lb525
eh-lb563
eh-lb567
eh-lb58x
sf32lb52-lcd系列
sf32lb56-lcd系列
sf32lb58-lcd系列
概述
本例程演示 A2DP 音乐分享(sharing)和 HFP 通话中继(relay)功能:设备作为中继在同时连接手机和耳机的情况下,将手机播放的音乐分享到耳机播放,同时也能将耳机端的音乐控制命令转发给手机实现音乐控制(不包括调音量)。
同时,本例程支持 HFP HF 和 HFP AG 双角色:设备连接手机时作为 HFP HF,连接蓝牙耳机时作为 HFP AG。当手机和耳机均连接到中继设备后,可以将手机侧的通话状态、来电号码、信号/电量等信息同步给耳机,并将耳机侧发起的拨号、接听、挂断、DTMF、通话音量调节等 HFP 控制请求转发给手机。
例程的使用
例程启动后会默认使能蓝牙,可以接受手机连接或主动发起对耳机的连接。手机侧用于 A2DP sink/HFP HF 连接,耳机侧用于 A2DP source/HFP AG 连接。
搜索蓝牙设备 通过命令
a2dp_trans inquiry start来搜索耳机类蓝牙设备,该命令只会上报搜到的 COD 的 Major Class 为 0x000400 的设备(Audio device)。 搜索到的设备会以 log “device [%s] searched” 和 “device COD is [%d], addr is xx:xx:xx:xx:xx:xx” 的形式打印。连接蓝牙设备 通过命令
a2dp_trans conn [addr]来进行连接,addr 将上面搜到设备的地址(xx:xx:xx:xx:xx:xx)打印值复制即可。 如果已知晓耳机类蓝牙设备地址,可以不用进行搜索蓝牙设备,直接连接即可。音乐分享
单独连上手机的情况下播放音乐,中继设备不会出声音。
单独连上耳机的情况下播放音乐,耳机设备不会出声音。
同时连上手机和耳机的情况下播放音乐,耳机设备会出声音,中继设备不会出声音。
已经在分享音乐的情况下,断开耳机,中继设备不会出声音。
已经在分享音乐的情况下,断开手机,耳机设备不会出声音。
已经在分享音乐的情况下,断开耳机后再重新连接上耳机,耳机设备会出声音。
中继设备默认不会回连耳机和手机设备。
HFP 通话中继
手机和耳机均连接到中继设备后,手机侧来电、拨号、通话状态变化会同步到耳机侧。
耳机侧执行接听、挂断、拨号、发送 DTMF 按键、调节通话音量等操作时,中继设备会将对应 HFP 控制请求转发给手机。
手机侧的运营商服务状态、信号强度、电池电量、漫游状态、来电号码、本机号码和当前通话信息等 HFP 指示信息会缓存并回复给耳机。
当手机侧 SCO 通话音频建立后,中继设备会尝试建立耳机侧 SCO 音频链路,并通过
CONFIG_CFG_BT_VOICE_RELAY进行通话语音中继;任一侧 SCO 断开后会同步关闭对应语音中继链路。典型连接成功 log 为 “HFP HF connected” 和 “HFP AG connected”;断开时分别打印 “HFP HF disconnected” 和 “HFP AG disconnected”。
硬件需求
运行该例程前,需要准备:
一块本例程支持的开发板(支持的平台)。
一个支持 HFP 和 A2DP 的手机。
一个蓝牙耳机。
编译和烧录
切换到例程project目录,运行scons命令执行编译:
> scons --board=eh-lb525 -j32
切换到例程project/build_xx目录,运行uart_download.bat,按提示选择端口即可进行下载:
$ ./uart_download.bat
Uart Download
please input the serial port num:5
关于编译、下载的详细步骤,请参考快速入门的相关介绍。
例程的预期结果
例程启动后:
在不连接蓝牙的情况播放内置音乐。
可以搜索耳机类蓝牙设备,并在连接后播放内置音乐。
同时连接手机和耳机后,手机播放的音乐可以通过中继设备分享到耳机播放。
手机和耳机均建立HFP连接后,手机侧通话状态和号码信息可以同步到耳机,耳机侧接听、挂断、拨号、DTMF和通话音量调节等控制可以转发到手机。
HFP连接成功时串口打印 “HFP HF connected” 和 “HFP AG connected”;通话状态变化时会打印 “the remote phone call_status”、“callsetup_status”、“callheld_status”等log。
异常诊断
参考文档
更新记录
版本 |
日期 |
发布说明 |
|---|---|---|
0.0.1 |
05/2026 |
初始版本 |