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 连接。

  1. 搜索蓝牙设备 通过命令 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” 的形式打印。

  2. 连接蓝牙设备 通过命令 a2dp_trans conn [addr] 来进行连接,addr 将上面搜到设备的地址(xx:xx:xx:xx:xx:xx)打印值复制即可。 如果已知晓耳机类蓝牙设备地址,可以不用进行搜索蓝牙设备,直接连接即可。

  3. 音乐分享

    1. 单独连上手机的情况下播放音乐,中继设备不会出声音。

    2. 单独连上耳机的情况下播放音乐,耳机设备不会出声音。

    3. 同时连上手机和耳机的情况下播放音乐,耳机设备会出声音,中继设备不会出声音。

    4. 已经在分享音乐的情况下,断开耳机,中继设备不会出声音。

    5. 已经在分享音乐的情况下,断开手机,耳机设备不会出声音。

    6. 已经在分享音乐的情况下,断开耳机后再重新连接上耳机,耳机设备会出声音。

    7. 中继设备默认不会回连耳机和手机设备。

  4. HFP 通话中继

    1. 手机和耳机均连接到中继设备后,手机侧来电、拨号、通话状态变化会同步到耳机侧。

    2. 耳机侧执行接听、挂断、拨号、发送 DTMF 按键、调节通话音量等操作时,中继设备会将对应 HFP 控制请求转发给手机。

    3. 手机侧的运营商服务状态、信号强度、电池电量、漫游状态、来电号码、本机号码和当前通话信息等 HFP 指示信息会缓存并回复给耳机。

    4. 当手机侧 SCO 通话音频建立后,中继设备会尝试建立耳机侧 SCO 音频链路,并通过 CONFIG_CFG_BT_VOICE_RELAY 进行通话语音中继;任一侧 SCO 断开后会同步关闭对应语音中继链路。

    5. 典型连接成功 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

关于编译、下载的详细步骤,请参考快速入门的相关介绍。

例程的预期结果

例程启动后:

  1. 在不连接蓝牙的情况播放内置音乐。

  2. 可以搜索耳机类蓝牙设备,并在连接后播放内置音乐。

  3. 同时连接手机和耳机后,手机播放的音乐可以通过中继设备分享到耳机播放。

  4. 手机和耳机均建立HFP连接后,手机侧通话状态和号码信息可以同步到耳机,耳机侧接听、挂断、拨号、DTMF和通话音量调节等控制可以转发到手机。

  5. HFP连接成功时串口打印 “HFP HF connected” 和 “HFP AG connected”;通话状态变化时会打印 “the remote phone call_status”、“callsetup_status”、“callheld_status”等log。

异常诊断

参考文档

更新记录

版本

日期

发布说明

0.0.1

05/2026

初始版本