发送暂停/恢复播放和下一曲/上一曲蓝牙命令

发送暂停/恢复播放和下一曲/上一曲蓝牙命令

我希望我的 Ubuntu PC 能够向其他通过蓝牙传输音乐的设备发送蓝牙音频命令(播放/暂停、下一首/上一首歌曲和调高/调低)。换句话说,我希望我的 Ubuntu PC“假装”是蓝牙耳机,能够更改曲目、暂停和恢复音乐。

我有以下设置,如下面的 pavucontrol 屏幕截图所示(pt2设备通过蓝牙连接): 在此处输入图片描述 在此处输入图片描述

在此配置下,流媒体可以按预期工作(我可以听到从中流出的音乐pt2),但我没有找到任何方法能够向其发送任何信号,例如暂停/恢复播放或更改曲目。

我已经发现有许多蓝牙协议允许特定功能。如果我正确理解了规格,我感兴趣的是 A2DP,这是设备现在的连接方式。但在配置文件下拉菜单下,我还有 HSP/HFP 耳机主机、HSP/HFP 耳机网关和关闭选项。

我将用 Python 开发自己的应用程序,它将允许发送这样的命令,所以我有兴趣通过 Python API 或 bash 命令发送它们。

我问这个问题是因为我对如何与蓝牙设备通信的方式感兴趣。

答案1

受到@kenn的启发,我决定更深入地研究dbusd-feet工具。最终,我使用以下命令实现了我的目标:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

这当然会触发通过蓝牙连接到电脑的移动设备上播放音乐。

对于蓝牙设备来说,这个命令一般如下:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

为了检查设备的 MAC 地址,请运行bt-devices -l。它将列出所有已知(但不一定已连接或甚至未发现)的设备,并在括号中标明 MAC 地址。

为了找到允许的命令列表,d-feet请使用安装sudo apt install d-feet。运行后,在选项卡bluez下应用搜索查询System Bus并找到包含您设备 MAC 地址的条目:

在此处输入图片描述

下有类似于使用蓝牙耳机的方法org.bluez.MediaControl1。但是,当你浏览这些树时,你会发现更多的方法,这真的值得你关注。

dbus-send是使用 发送信号的命令dbus--system开关表示我们想要使用System Busd-feet 选项卡中的内容。我还没有尝试过,但我认为--print-reply它仅用于调试目的,并不是强制性的。--dest=org.blez指的是Named-feet 标题。/org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>org.bluez.MediaControl1.<command>指的是对象树路径。

相关内容