目前大多数音频视频设备采用红外遥控器,由于距离、角度、障碍物等的影响,红外遥控器的应用受到了很大限制。蓝牙无线通信技术可以实现传统红外遥控全部应用功能,而且客服了红外遥控器的局限性。蓝牙音频视频遥控应用框架(Audio Video Remote Control Profile,AVRCP)就是实现无线遥控功能的规范。
蓝牙耳机按键的处理在android层主要就是对BT的AVRCP profile的处理。下面我们来具体看下。
上层对接收到的AVRCP命令的处理有两部分。
1、对metadata, play status and event notification的处理。(avrcp.java)
2、对播放、暂停、停止、上一首、下一首的按键处理(快进和快退不在这里处理,是第一种情况)。使用uinput模拟输入设备转化为input event。
现在我们就来分别分析一下上述的两种处理。
一、avrcp音频属性的处理
AVRCP主要负责以下的功能:
1、 接受来自蓝牙耳机的请求,并返回响应;
2、 当用户直接用手机操作音乐时,将状态更新到蓝牙耳机;
3、 将手机音量的改变通知蓝牙耳机,将蓝牙耳机音量的改变通知手机audio;
上面的功能主要是通过回调函数、Native函数和AvrcpMessageHandler类实现的。回调函数负责将来自蓝牙耳机的消息通知给手机,Native函数返回响应给蓝牙耳机。
主要包含以下回调方法: