【经典蓝牙】蓝牙AVRCP协议分析
协议简介
蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。
协议分层
AVRCP协议是在L2CAP上进行传输的,平常的控制命令都是通过下层AVCTP通道进行传输,而AVRCP 1.6版本之后支持音乐封面图片传输,音乐封面图片之类的图片数据则使用BIP协议通过OBEX通道进行传输。
AVRCP连接与断开
AVRCP连接
AVCTP 的连接分为两个通道: Control 通道跟 Brwoing 通道。 ,对应的 L2CAP PSM 不同, control
通道的 PSM 为 0x0017,AVCTP browing 通道的 PSM 为 0x001B。 两个通道 controller 跟 target 角
色都可以发起连接。
注意一点, AVCTP browing 部分基于 L2CAP 不能用 basic mode, 需要用
到 Enhanced Retransmission Mode, 而且在双方都支持 AVCTP browing 的情况下才能发起
AVCTP browing channel 的连接
CT端发起的连接
TG端发起的连接
TG端发起control通道的连接,CT端发起Brwoing 通道的连接。
AVRCP断开
断开可以从 AVRCP controller 或者 target 角色操作, 如果有 AVCTP browing 在连接, 那
么先断开 AVCTP browing 通道的连接。
AVRCP指令
蓝牙AVRCP的命令分为以下几种:
AV/C 指令码
AV/C 指令码是 AV/C通用规范定义的指令,AV/C指令码又细分为以下几种:
■UNIT INFO 指令: 获取COMPAND_ID指令,对端返回值为固定值,表示蓝牙的COMPAND_ID
■SUBUNIT INFO 指令:获取SUBUNIT INFO, 返回值通常为固定值,表示pass through指令的类型。
■VENDOR DEPENDENT 指令(重要):蓝牙技术联盟定义的指令,包括控制指令、状态指令、通知指令等,使用的是AV/C设备模型,这些消息是按照AV/C数字接口命令集的规定进行发送的,消息是在AVCTP上进行传输。 比如蓝牙耳机获取手机音乐的播放状态,播放事件通知,调节手机音乐的均衡器模式, 播放循环模式等,这些都是VENDOR DEPENDENT 指令。
■PASS THROUGH 指令(重要): 用来控制对端蓝牙的音乐播放状态,例如常用的蓝牙耳机控制手机音乐播放、暂停、上一曲、下一曲等指令都是PASS THROUGH 指令。
浏览指令:浏览功能是用来导航对端蓝牙的音乐列表,并控制特定的媒体播放器,使用的是AVCTP的第二通道进行传输的。
封面指令:蓝牙AVRCP 1.6协议支持了传输音乐封面图片,使用的BIP协议进行传输,下层通道使用的是OBEX通道。
PASS THROUGH 指令PASS THROUGH指令指令是AV/C标准指令, 用来控制对端蓝牙设备的音乐播放状态。 常用的控制音乐的播放、暂停、上一曲、下一曲等命令都是通过PASS THROUGH指令下发的。PASS THROUGH命令如下图:
PASS THROUGH 指令&浏览指令:Command Type 为 control、 status、 notify的都是VENDOR DEPENDENT指令, Command Type为Browsing的为浏览指令。
【经典蓝牙】蓝牙AVRCP协议分析相关推荐
- Android 蓝牙开发——Avrcp协议获取歌曲信息(十八)
通过前面的 Avrcp 协协议的学习,我们知道蓝牙音乐的控制是通过媒体播放器进行的.而媒体播放器的数据发生变化时会通过 MediaSeesion 通知客户端,本篇文章主要分析一下歌曲信息是如何传递的. ...
- Android 蓝牙开发——Avrcp协议(十二)
SDK路径:frameworks/base/core/java/android/bluetooth/ 服务路径:packages/apps/Bluetooth/src/com/android/blue ...
- Android 蓝牙 hid hogp协议分析大全- 全网最详细
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 简述 HID ...
- 蓝牙avrcp协议源码分析
原址:http://blog.csdn.net/u012439416/article/details/54348147 1,概述 1.1 avrcp协议 全称: Audio / Video Remot ...
- 蓝牙协议分析(2)_协议架构
原文链接:蓝牙协议分析(2)_协议架构 (wowotech.net) 系列索引:蓝牙协议分析(1)_基本概念 目录 1.前言 2.协议层次 2.1 物理层 2.1.1 Physical Channel ...
- 蓝牙协议分析_BLE广播通信相关的技术分析
1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用.关于广播通信,通过"玩转BLE(1)_Eddystone be ...
- 蓝牙协议分析(5)_BLE广播通信相关的技术分析
蓝牙协议分析(5)_BLE广播通信相关的技术分析 作者:wowo 发布于:2016-5-27 16:15 分类:蓝牙 1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广 ...
- 蓝牙协议分析(11)_BLE安全机制之Security Manager
1. 前言 书接上文,我们在"蓝牙协议分析(10)_BLE安全机制之LE Encryption"中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是 ...
- 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍
原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...
最新文章
- opensuse11.4 apache2 403 错误.
- JFreeChart入门
- lnmp的编译安装mysql_LNMP环境搭建(二) 编译安装MySQL
- 树莓派GPIO口的使用(外设相关开发WringPi库的使用,超声波、继电器)
- 一、第一个注解的 SpringMVC 程序
- JDK 9 对字符串 String 的优化,挺有意思!
- win7虚拟机手机版_UTM 2.0 虚拟机来了,解决上网和无声音问题
- 《编码规范和测试方法——C/C++版》作业 ·004——设计一个顺序表
- 利用 opencv 中的 cv.Canny 函数快速进行图像边缘检测
- 具有动态效果的响应式设计
- js判断是否是正整数,js判断是否是数字
- 如何入门分子动力学模拟?
- 《电动自行车充电领域的液体冷却技术研究》论文笔记
- 英语论文写作笔记一则
- mysql的exception_mysqlexception
- 阿里云服务器遭到攻击怎么办?
- yolov5模型转换(pt=>onnx=>rknn)和板端验证测试
- 优盘婚礼MP4视频播放内容不全的文件修复技术
- python去除字符串中的空格、特殊字符、指定字符
- sklearn sklearn中KFold()的具体用法