目录
介绍
Avrcp相关的逻辑代码都在sink_avrcp*文件中,sink_avrcp.c和.h主要是应用层的api,包括媒体控制,事件注册,连接管理等;sink_avrcp_browsing.c中主要是媒体信息获取相关的api,至于这些api的原理,请参数蓝牙avrcp协议,有兴趣可以去看我的蓝牙协议专栏。
Avrcp控制
adk已经封装了相关UE事件为AT指令,通过这些指令即可实现对应的控制效果,AT的实现请参考我上篇的博客,如EventUsrAvrcpPlay,通过如下代码,就可以控制手机端音乐播放,其他的控制也可以参考做类似操作即可
Avrcp注册evt
有些事件需要手机端在有状态改变的时候,主动通知,比如歌曲切换之后其歌曲的相关信息,播放状态改变等。类似于注册回调函数。
AvrcpRegisterNotificationRequest()通过这个接口,可以向TG注册某状态改变对应的事件,事件的支持依赖于蓝牙规范中规定的事件列表,当然设备不一定支持蓝牙规范中的所有事件,所以还依赖于TG(手机端)的所支持的feature。想深入了解的,可以去看我的蓝牙协议栈之AVRCP篇。
Avrcp浏览媒体信息
AVRCP支持浏览当前播放的媒体的信息,如歌曲名,专辑,歌手等,可以通过该接口AvrcpGetElementAttributesRequest,主动从手机端读取。
当然正在播放的歌曲可能会发生变化,但是又不能无限循环从手机端获取,所以通常的做法是注册媒体内容改变的事件(avrcp_event_now_playing_content_changed),当手机端通知的到该事件时,再调用上面的接口去读取attribute信息
详细源码及相关的工具资料等,请到我的博客<csr867x入门笔记(序)>最下面的网盘链接或者github链接中下载。