Bluez D-Bus:蓝牙扬声器播放/暂停/下一个/上一个按钮处理

时间:2016-03-18 10:21:39

标签: c glib dbus bluez avrcp

我正在研究Linux平台上用C语言编写的互联网广播项目的蓝牙媒体播放器功能。 这个想法是:

  • 连接到附近支持AVRCP配置文件的BT扬声器
  • 通过BT将音频传输到BT扬声器
  • 处理按钮推送事件

最初我遵循MPRIS D-Bus接口规范:https://specifications.freedesktop.org/mpris-spec/latest/

如果我理解得很清楚,规范会说明如下:

  • 请求一个如下所示的唯一总线名称:org.mpris.MediaPlayer2.AnyName
  • 公开/ org / mpris / MediaPlayer2对象路径
  • 实施以下界面:
    • org.mpris.MediaPlayer2
    • org.mpris.MediaPlayer2.Player

所有这些步骤都已完成。我正在使用D-Feet D-bus工具来测试属性查询,方法调用以及它们都正常工作。

现在我的问题是,当我连接到BT扬声器并按下按钮时,应用程序无法获取事件。

你能指出我错过了什么,接下来该怎么办?

提前致谢!

PM:对不起,如果我不清楚,我是新生程序员和Stackoverflow用户。如果您需要更多信息,请询问我。我将不胜感激任何建议:)

EDIT1:我的源码是1200行,我不知道我可以从代码中提取什么。但仅供参考我正在使用GLib的高级D-Bus支持:https://developer.gnome.org/gio/stable/gdbus-convenience.html

1 个答案:

答案 0 :(得分:0)

uinput模块用于写入AVRCP键命令,因此当连接BT耳机(A2DP)时,您将需要客户端从uinput读取,检查profile / audio / avctp.c :: uinput_create(),当avrcp配置文件已连接,密钥从handle_panel_passthrough()函数发送到内核中的uinput模块

相关问题