csr867x入门之avrcp使用(四)

目录

介绍

Avrcp控制

Avrcp注册evt

Avrcp浏览媒体信息


介绍

Avrcp相关的逻辑代码都在sink_avrcp*文件中,sink_avrcp.c和.h主要是应用层的api,包括媒体控制,事件注册,连接管理等;sink_avrcp_browsing.c中主要是媒体信息获取相关的api,至于这些api的原理,请参数蓝牙avrcp协议,有兴趣可以去看我的蓝牙协议专栏。

Avrcp控制

adk已经封装了相关UE事件为AT指令,通过这些指令即可实现对应的控制效果,AT的实现请参考我上篇的博客,如EventUsrAvrcpPlay,通过如下代码,就可以控制手机端音乐播放,其他的控制也可以参考做类似操作即可

csr867x入门之avrcp使用(四)_第1张图片

Avrcp注册evt

有些事件需要手机端在有状态改变的时候,主动通知,比如歌曲切换之后其歌曲的相关信息,播放状态改变等。类似于注册回调函数。

AvrcpRegisterNotificationRequest()通过这个接口,可以向TG注册某状态改变对应的事件,事件的支持依赖于蓝牙规范中规定的事件列表,当然设备不一定支持蓝牙规范中的所有事件,所以还依赖于TG(手机端)的所支持的feature。想深入了解的,可以去看我的蓝牙协议栈之AVRCP篇。

Avrcp浏览媒体信息

AVRCP支持浏览当前播放的媒体的信息,如歌曲名,专辑,歌手等,可以通过该接口AvrcpGetElementAttributesRequest,主动从手机端读取。

当然正在播放的歌曲可能会发生变化,但是又不能无限循环从手机端获取,所以通常的做法是注册媒体内容改变的事件(avrcp_event_now_playing_content_changed),当手机端通知的到该事件时,再调用上面的接口去读取attribute信息

 

详细源码及相关的工具资料等,请到我的博客最下面的网盘链接或者github链接中下载。 

你可能感兴趣的:(csr867x)