高通 Linux 蓝牙指南(八)

高级音频分发配置文件

A2DP 定义了如何通过蓝牙连接将多媒体音频从一个设备流式传输到另一个设备。这个机制也称为蓝牙音频流媒体。
要执行 A2DP 源或接收器功能,您必须首先完成以下步骤。

安装设备以支持 A2DP 功能

先决条件
  • 启用 SSH 以访问您的主机设备。有关说明,请参见使用 SSH 登录。
  • 将 DUT(设备在测试中)与远程设备配对。有关说明,请参见与远程蓝牙设备配对。
  • 将 DUT 和远程设备放置在蓝牙范围内。
操作步骤
  1. 在命令提示符下运行 SSH,使用以下命令:

    ssh root@<device_IP_address>
    
    示例

    如果设备的 IP 地址为 10.92.160.222,请运行以下命令:

    ssh root@10.92.160.222
    
  2. 通过输入以下密码连接到 SSH:

    oelinux123
    
  3. 通过运行以下命令打开蓝牙测试应用程序:

    bluetoothctl
    
    示例输出
    sh-5.1# bluetoothctl
    Agent registered        uetoothd...
    [CHG] Controller 22:22:F1:C1:99:C0 Pairable: yes
    
  4. 根据需要进入传输子菜单或播放器子菜单。

    • 要进入传输子菜单,请在 bluetoothctl 中运行以下命令:

      menu transport
      
      示例输出
      [bluetooth]# menu transport
      Menu transport:
      Available commands:
      -------------------
      list                                              List available transports
      show <transport>                                  Transport information
      acquire <transport>                               Acquire Transport
      release <transport>                               Release Transport
      send <transport> <filename>                       Send contents of a file
      receive <transport> [filename]                    Get/Set file to receive
      volume <transport> [value]                        Get/Set transport volume
      back                                              Return to main menu
      version                                           Display version
      quit                                              Quit program
      exit                                              Quit program
      help                                              Display help about this program
      export                                            Print environment variables
      

      要执行源中的传输子菜单功能,请参见执行蓝牙 A2DP 源功能。
      要执行接收器中的传输子菜单功能,请参见执行蓝牙 A2DP 接收器功能。

    • 要进入播放器子菜单,请在 bluetoothctl 中运行以下命令:

      menu player
      
      示例输出
      [bluetooth]# menu player
      Menu player:
      	Available commands:
      -------------------
      list                                              List available players
      show [player]                                     Player information
      select <player>                                   Select default player
      play [item]                                       Start playback
      pause                                             Pause playback
      stop                                              Stop playback
      next                                              Jump to next item
      previous                                          Jump to previous item
      fast-forward                                      Fast forward playback
      rewind                                            Rewind playback
      equalizer <on/off>                                Enable/Disable equalizer
      repeat <singletrack/alltrack/group/off>           Set repeat mode
      shuffle <alltracks/group/off>                     Set shuffle mode
      scan <alltracks/group/off>                        Set scan mode
      change-folder <item>                              Change current folder
      list-items [start] [end]                          List items of current folder
      search <string>                                   Search items containing string
      queue <item>                                      Add item to playlist queue
      show-item <item>                                  Show item information
      back                                              Return to main menu
      version                                           Display version
      quit                                              Quit program
      exit                                              Quit program
      help                                              Display help about this program
      export                                            Print environment variables
      

      要执行接收器中的播放器子菜单功能,请参见执行蓝牙 A2DP 接收器功能。

执行蓝牙 A2DP source功能

您可以使用 bluetoothctl 菜单、传输子菜单和 paplay 命令执行蓝牙 A2DP source功能。
在开始之前,请按照“设置设备以支持 A2DP 功能”中的说明设置您的设备并进入所需的菜单。

连接远程设备

要在 A2DP 源角色中连接远程设备,请在 bluetoothctl 菜单中运行以下命令:

connect <bt_address>
参数

<bt_address> 是远程设备的蓝牙地址。

示例

要连接到已配对的远程设备,蓝牙地址为 17:1A:35:8D:A2:A4,请运行以下命令:

connect 17:1A:35:8D:A2:A4
示例输出
[bluetooth]# connect 17:1A:35:8D:A2:A4
Attempting to connect to 17:1A:35:8D:A2:A4
[CHG] Device 17:1A:35:8D:A2:A4 Connected: yes
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 ServicesResolved: yes
[CHG] Device 17:1A:35:8D:A2:A4 Bonded: yes
[CHG] Device 17:1A:35:8D:A2:A4 Paired: yes
[NEW] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1
[NEW] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep2
[NEW] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
Connection successful
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 State: active
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0040 (64)
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 State: idle
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0044 (68)
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0040 (64)
[MySoundbar]#

列出可用传输

要列出可用的传输,请在传输子菜单中运行以下命令:

list
示例输出
[MySoundbar]# list
Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0

获取编解码器能力信息

要获取传输的编解码器能力信息,请在传输子菜单中运行以下命令:

show <transport>
参数

是传输路径。

示例

要获取路径为 /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 的传输的编解码器能力信息,请运行以下命令:

show /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
示例输出
[MySoundbar]# show /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
        UUID: 0000110a-0000-1000-8000-00805f9b34fb
        Codec: 0x00 (0)
        Configuration: 0x21 (33)
        Configuration: 0x15 (21)
        Configuration: 0x02 (2)
        Configuration: 0x35 (53)
        Device: /org/bluez/hci0/dev_17_1A_35_8D_A2_A4
        State: idle
        Volume: 0x0040 (64)

设置绝对音量

注意 确保 DUT 和远程设备支持 setabsvolume 功能。

要设置传输的绝对音量,请在传输子菜单中运行以下命令:

volume <transport> [value]
参数
  • 是传输路径。
  • [value] 是音量级别。
示例

要将路径为 /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 的绝对音量设置为 50,请运行以下命令:

volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 50
示例输出
[MySoundbar]# volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 50
Changing Volume succeeded
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0032 (50)
[MySoundbar]# volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 10
Changing Volume succeeded

播放音频文件

注意

  • DUT 不支持音频播放器。请使用 paplay 命令播放音乐。
  • 仅支持 PCM 音频样本。

要从 DUT 播放歌曲,请执行以下操作:

  1. 运行 SSH。
  2. 通过运行以下命令播放 WAV 文件:
    paplay <audio_filepath> -v
    
    参数
    <audio_filepath> 是 WAV 文件的路径。
    示例
    要播放路径为 /tmp/pcmtest.wav 的 WAV 文件,请运行以下命令:
    paplay /tmp/pcmtest.wav -v
    
    示例输出
    sh-5.1# paplay /tmp/pcmtest.wav -v
    Opening a playback stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'.
    Connection established.
    Strean successfully created.
    Buffer metrics: maxlength=4194304, tlength=352800, prebuf=349276, minreq=3528
    Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'.
    Connected to device bluez_sink.20_19_D8_36_90_40.a2dp_sink (index: 4, suspended: no).
    Stream started.
    Time: 4.427 sec; Latency: 2042656 usec.
    

获取接收器列表

要在多个设备连接时获取接收器列表,请在 SSH 中运行以下命令:

pactl list sinks short
示例输出
sh-5.1# pactl list sinks short
0 low-latency0    module-pal-card.c    s16le 2ch 48000Hz    SUSPENDED
1 deep-buffer0    module-pal-card.c    s16le 2ch 48000Hz    SUSPENDED
2 offload0        module-pal-card.c    s16le 2ch 48000Hz    SUSPENDED
3 voip-rx0        module-pal-card.c    s16le 2ch 48000Hz    SUSPENDED
4 bluez_sink.20_19_D8_36_90_40.a2dp_sink    module-bluez5-device.c    s16le 2ch 44100Hz    SUSPENDED

在特定接收器上播放音频

要在连接多个设备时在特定接收器上播放音频,请在 SSH 中运行以下命令:

paplay <audio_filepath> --device=<device_name> -v
参数
  • <audio_filepath> 是 WAV 文件的路径。
  • <device_name> 是接收器名称。
示例

要在接收器 bluez_sink.20_19_D8_36_90_40.a2dp_sink 上播放 pcmtest.wav,请运行以下命令:

paplay pcmtest.wav --device=bluez_sink.20_19_D8_36_90_40.a2dp_sink -v
示例输出
sh-5.1# paplay pcmtest.wav --device=bluez_sink.20_19_D8_36_90_40.a2dp_sink -v
Opening a playback stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'.
Connection established.
Stream successfully created.
Buffer metrics: maxlength=4194304, tlength=352800, prebuf=349276, minreq=3528
Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'.
Connected to device bluez_sink.20_19_D8_36_90_40.a2dp_sink (index: 4, suspended: no).
Stream started.
Time: 2.925 sec; Latency: 2062081 usec.

断开远程设备

要断开远程设备,请在 bluetoothctl 菜单中运行以下命令:

disconnect <bt_address>
参数

<bt_address> 是远程设备的蓝牙地址。

示例

要断开已配对的远程设备,蓝牙地址为 17:1A:35:8D:A2:A4,请运行以下命令:

disconnect 17:1A:35:8D:A2:A4
示例输出
[MySoundbar]# disconnect 17:1A:35:8D:A2:A4
Attempting to disconnect from 17:1A:35:8D:A2:A4
[DEL] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd2
[DEL] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1
[DEL] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep2
[CHG] Device 17:1A:35:8D:A2:A4 ServicesResolved: no
Successful disconnected
[CHG] Device 17:1A:35:8D:A2:A4 Connected: no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值