协议简介

蓝牙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协议分析相关推荐

  1. Android 蓝牙开发——Avrcp协议获取歌曲信息(十八)

    通过前面的 Avrcp 协协议的学习,我们知道蓝牙音乐的控制是通过媒体播放器进行的.而媒体播放器的数据发生变化时会通过 MediaSeesion 通知客户端,本篇文章主要分析一下歌曲信息是如何传递的. ...

  2. Android 蓝牙开发——Avrcp协议(十二)

    SDK路径:frameworks/base/core/java/android/bluetooth/ 服务路径:packages/apps/Bluetooth/src/com/android/blue ...

  3. Android 蓝牙 hid hogp协议分析大全- 全网最详细

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 简述 HID ...

  4. 蓝牙avrcp协议源码分析

    原址:http://blog.csdn.net/u012439416/article/details/54348147 1,概述 1.1 avrcp协议 全称: Audio / Video Remot ...

  5. 蓝牙协议分析(2)_协议架构

    原文链接:蓝牙协议分析(2)_协议架构 (wowotech.net) 系列索引:蓝牙协议分析(1)_基本概念 目录 1.前言 2.协议层次 2.1 物理层 2.1.1 Physical Channel ...

  6. 蓝牙协议分析_BLE广播通信相关的技术分析

    1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用.关于广播通信,通过"玩转BLE(1)_Eddystone be ...

  7. 蓝牙协议分析(5)_BLE广播通信相关的技术分析

    蓝牙协议分析(5)_BLE广播通信相关的技术分析 作者:wowo 发布于:2016-5-27 16:15 分类:蓝牙 1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广 ...

  8. 蓝牙协议分析(11)_BLE安全机制之Security Manager

    1. 前言 书接上文,我们在"蓝牙协议分析(10)_BLE安全机制之LE Encryption"中介绍了BLE安全机制中的终极武器----数据加密.不过使用这把武器有个前提,那就是 ...

  9. 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

    原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...

最新文章

  1. opensuse11.4 apache2 403 错误.
  2. JFreeChart入门
  3. lnmp的编译安装mysql_LNMP环境搭建(二) 编译安装MySQL
  4. 树莓派GPIO口的使用(外设相关开发WringPi库的使用,超声波、继电器)
  5. 一、第一个注解的 SpringMVC 程序
  6. JDK 9 对字符串 String 的优化,挺有意思!
  7. win7虚拟机手机版_UTM 2.0 虚拟机来了,解决上网和无声音问题
  8. 《编码规范和测试方法——C/C++版》作业 ·004——设计一个顺序表
  9. 利用 opencv 中的 cv.Canny 函数快速进行图像边缘检测
  10. 具有动态效果的响应式设计
  11. js判断是否是正整数,js判断是否是数字
  12. 如何入门分子动力学模拟?
  13. 《电动自行车充电领域的液体冷却技术研究》论文笔记
  14. 英语论文写作笔记一则
  15. mysql的exception_mysqlexception
  16. 阿里云服务器遭到攻击怎么办?
  17. yolov5模型转换(pt=>onnx=>rknn)和板端验证测试
  18. 优盘婚礼MP4视频播放内容不全的文件修复技术
  19. python去除字符串中的空格、特殊字符、指定字符
  20. sklearn sklearn中KFold()的具体用法

热门文章

  1. gateway+nacos获取不到服务列表报503
  2. 《数学之美》——第九章 个人笔记
  3. Oracle 11g Data Guard 物理备库快速配置指南(下)
  4. 计算机视觉数据集介绍:KITTI数据集
  5. IC卡读卡器配置(只为工作)
  6. zoj 1203 Swordfish
  7. java对数字证书的验证_JAVA对数字证书的常用操作
  8. 围棋棋盘怎么编程python_python实现围棋ai
  9. 【向 Dice Roller 应用添加图片】
  10. InterSystems 2022全球峰会亮点解读:Smart Data Fabric与InterSystems数据平台的超能力