【问题标题】:Bluez D-Bus: Bluetooth speaker Play/Pause/Next/Previous button handlingBluez D-Bus:蓝牙扬声器播放/暂停/下一个/上一个按钮处理
【发布时间】:2016-07-05 01:22:26
【问题描述】:

我正在研究一个在 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

【问题讨论】:

  • 嗨,欢迎来到 Stackoverflow。您能否分享一些您编写的与您的问题相关的代码?
  • 现在的代码有 1200 行。我不知道我是否可以提取代码的sn-ps。相反,我将编辑我的帖子并添加一行我正在使用 Glib 的高级 D-Bus 支持。

标签: c glib dbus bluez avrcp


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    相关资源
    最近更新 更多