简介
AVRCP子协议的作用是支持CT控件TG。 具体来说,只要手机和蓝牙音箱连接,音箱就可以控制手机的播放/暂停/断歌,获取相册、曲名、歌手、时长等手机播放的歌曲信息。 iphone支持丰富的信息获取,安卓手机的差异化很大,支持的不如iphone好。
audio/videoremotecontrolprofile (avrcp )定义蓝牙设备与audio/video控制功能的通信特征和流程。 此配置文件定义了视听/c数字命令控制集。 命令和信息通过音频/视频控制传输协议(avctp )协议传输。 浏览功能使用AVRCTP的第二个通道,而不是AV/C。 要传输媒体信息,请使用基于板载显卡协议的蓝牙基本图像配置文件(bip )协议。
依赖于audio/videoremotecontrolprofile
配置文件堆栈
设备的作用
CT (控制器)设备:通过向目标发送命令帧开始传输。 例如,PC、PDA、电话、车载系统、耳机、再现/录音设备
TG(target )设备)播放/录音设备、电视、耳机等接收命令并根据命令进行响应的设备。
分为四种设备
1 .播放/录音功能支持播放或录音设备的基本操作
2 .监测/放大器功能
视频监视器或音频放大器的基本操作
3 .调谐器功能
音频视频调谐器的基本操作
4 .菜单功能
所有这四种设备都必须支持歌曲控制功能。
歌控这里的歌控罗列是比较共同的功能。
播放/暂停/停止/上一首/下一首。
buetoothavrcp.javapublicstaticfinalintpassthrough _ id _ play=0x 44;/* play */publicstaticfinalintpassthrough _ id _ stop=0x 45;/* stop */publicstaticfinalintpassthrough _ id _ pause=0x 46;/* pause */publicstaticfinalintpassthrough _ id _ forward=0x4b;/* forward */publicstaticfinalintpassthrough _ id _ backward=0x4c; /* backward */以上为AndroID源代码中定义的控件id,希望实现控件的app代码如下。
privatevoidsendcommand (int keycode ) if ) mavrcpcontroller==空值) return; listbluetoothdevicedevices=mavrcpcontroller.getconnecteddevices (; 蓝牙设备:设备(log.d )标签, ' sendcommandtodevice 3360 ' keycode device.getname (' device ) ' device mavrcpcontroller.sendpassthroughcmd (device,device ) ) mavrcpcontroller.sendpassthroughcmd (device,keyCode,蓝牙avrcp.pass through _ state _ release ); } publicvoidonplaybuttonclick (view view ) sendcommand ) bluetooth avrcp.pass through _ id _ play; 我在使用passthrogh command。 这些命令在手册中有说明。
此外,虽然没有实现android6.0协议栈,但文档中有此协议command和response的说明。
获取信息
有关修改system/bt协议栈中的btif_rc.c文件、命令包和解包、native和frameworks以及package层的修改框架的信息,请参见上一篇文章。