gpt4 book ai didi

c - Bluez D 总线 : Bluetooth speaker Play/Pause/Next/Previous button handling

转载 作者:太空宇宙 更新时间:2023-11-04 04:31:12 24 4
gpt4 key购买 nike

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

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

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

如果我理解得很好,规范说明如下:

  • 请求一个唯一的总线名称,如下所示:org.mpris.MediaPlayer2.AnyName
  • 公开/org/mpris/MediaPlayer2 对象路径
  • 实现以下接口(interface):
    • 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

最佳答案

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

关于c - Bluez D 总线 : Bluetooth speaker Play/Pause/Next/Previous button handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com