2014-02-09 363 views
1

我很难理解如何使用我的项目实现AVRCP。我寻觅颇有几分看了很多数据表,但我仍然似乎失去了一些东西......蓝牙A2DP + AVRCP 1.3+模块

这是我想做的事:

简单地说,我希望能够用我的连接只要蓝牙模块支持A2DP,通过蓝牙将android 4.3设备通过A2DP传输音乐(这看起来非常简单)。此外,我想能够控制媒体播放器应用程序(潘多拉等)。现在,我知道AVRCP 1.0只支持基本的控制命令(暂停,播放,下一个,上一个,FF,RW),并且我发现许多在线的蓝牙模块支持通过简单的UART AT命令或命令通过SPI总线发送这些命令。不过,我也希望能够从android设备(仅限AVRCP 1.3+功能)获取元数据,例如曲目名称,专辑名称,艺术家姓名,曲目长度和已用时间。现在

,从我的理解,获得元数据,我需要支持AVRCP 1.3或更高版本蓝牙模块。我无法理解的是如何请求元数据!从我读的内容来看,元数据(如曲目名称,艺术家,ablum和曲目长度)是为了响应音轨更改命令而发送的。任何人都可以确认吗?如果我需要请求流逝的时间呢?

理想情况下,我正在寻找一个支持A2DP(24位,如果有的话)和AVRCP 1.3或更高版本的蓝牙模块,可以通过UART或SPI或I2C接口发送,暂停,接下来,音乐播放器和请求艺术家,专辑,曲目名称,已用时间,曲目长度元数据。

这是我发现的唯一单元的数据手册中提到的元数据: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/Melody_5.0_Manual-RevD-RC10-Release.pdf(pg.16)

但我还不清楚这是如何工作!

这里的任何帮助将是巨大的!

+0

AVRCP支持2 roles.target和控制器,送你需要定义目标角色,请参阅[media.doc]所有的元数据信息(https://git.kernel.org/cgit/bluetooth/bluez.git/tree /doc/media-api.txt?id=4.101)。检查APIS,您需要注册媒体播放器并传递元数据和跟踪信息。如果控制器更改任何参数,媒体接口SetProperty()将被调用,并且PropertyChanged信号需要从您的代码发送到具有所有值的bluez,docs有点清晰。如果您使用的是其他堆栈而不是bluez,则此操作不起作用 – ashish

+0

可能的[通过A2DP/AVRCP发送曲目信息]的副本(http://stackoverflow.com/questions/15527614/send-track-informations-via-a2dp-avrcp) – Phrogz

回答

2

首先,你应该看看这个文件: https://developer.bluetooth.org/TechnologyOverview/Documents/AVRCP_SPEC.pdf

要想从源头上的元数据,你必须使用以下命令: GetElementAttributes()

要知道如何使用功能和要设置的参数,请转至数据表中的第53页。白功能,您可以访问以下属性:标题,艺术家姓名,专辑名称,曲目编号,曲目总数,流派,播放时间。源将用所需的属性进行响应。对于他们的特定ID的所有属性的列表,请参见附录E页132

对不起,我的英语:)