当前位置: 首页 > article >正文

蓝牙AVRCP协议概述

AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和 audio/video 控制功能通信的特
点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP 传输协议。该 Profile 定义了AV/C 数字命令控制集。命令和信息通过 AVCTP(Audio/Video Control Transport Protocol)协议进
行传输。浏览功能通过 AVCTP 的第二个 channel 而不是 AV/C。传输媒体信息通过基于 OBEX
协议的 BIP(Bluetooth Basic Imaging Profile)协议。架构如下:
在这里插入图片描述

在我们协议栈的位置是:
在这里插入图片描述
角色
发送命令控制的就是 AVRCP controller(CT),那么接受命令的就是 AVRCP target(TG).

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 的连接;连接时,先建立 control通道,再建立brwoing通道,断开时反过来

VENDOR DEPENDENT 格式
command格式
在这里插入图片描述
Ctype:这个是 command 类型,一共分为 5 种,此定义在 AVC Digital Interface Command Set.pdf
中有介绍,一般我们在 AVRCP 协议中会用到 3 中,分别是 CONTROL 控制命令,STATUS 获取
状态命令,NOTIFY 通知命令,分别类型如下:
在这里插入图片描述
Subunit_type:子信息类型,一般用9(PANEL)
Subunit_id:此部分我们一般填 0
Opcode:我们仅仅需要知道每个特定的 comamnd opcode 是什么就行,VENDOR DEPENDENT
的值为 0。
Company ID:此部分需要填写蓝牙 SIG 的 ID

response 格式
在这里插入图片描述
response的值可以是A B C D F,个人简单理解:
A REJECTED 拒绝执行command
B IN TRANSITION 正在执行的过渡状态
C implemented/stable 执行完成的稳定状
D changed 标明目标设备的状态已发生变化
E 保留
F interim 目标已接收该请求,但无法在100ms内返回信息,将在未来某个时间,向控制器通知目标状态的变化

PASS THROUGH格式
它的command和response格式如下:
在这里插入图片描述
Operation_ID:操作 ID,从0-7f,包括音量加减啦,上下一曲啦,播放暂停啦等等
State_flag:分 press 跟 realease 动作,发送press 的时候这个值为 0,realease 的时候这个值为 1

还有一些AVRCP的特定命令
在这里插入图片描述
在这里插入图片描述
实际应用中我们一般只会用到 Get Capabiliby for event,来获取对端支持的 event,方便注册notify,可以看到上图支持播放状态改变,歌曲改变,播放器设置改变。

GetPlayStatus
这个命令是 controller 像 target 发送获取播放状态的命令,返回值包括歌曲总长度,歌曲当
前进度,以及播放状态,一共占用 9byte(4byte 歌曲长度,4byte 当前进度,1byte 播放状态)

还有注册通知命令
在这里插入图片描述
在这里插入图片描述
有这些通知:
在这里插入图片描述
上面说的支持哪些event,其实就是有哪些通知可以发,ct可以注册哪些通知

每个EVENT的具体response结构可以在官方文档查

还有很多的特定命令,这里没有列出

相关文章:

蓝牙AVRCP协议概述

AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和 audio/video 控制功能通信的特 点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP 传输协议。该 Profile 定义了AV/C 数字命令控制集。命令和信息通过 AVCTP(Audio/Video Control Trans…...

2025长三角杯数学建模B题思路模型代码:空气源热泵供暖的温度预测,赛题分析与思路

2025长三角杯数学建模B题思路模型代码,详细内容见文末名片 空气源热泵是一种与中央空调类似的设备,其结构主要由压缩主机、热交换 器以及末端构成,依靠水泵对末端房屋提供热量来实现制热。空气源热泵作为热 惯性负载,调节潜力巨…...

基于大数据的租房信息可视化系统的设计与实现【源码+文档+部署】

课题名称 基于大数据的租房信息可视化系统的设计与实现 学 院 专 业 计算机科学与技术 学生姓名 指导教师 一、课题来源及意义 租房市场一直是社会关注的热点问题。随着城市化进程的加速,大量人口涌入城市,导致租房需求激增。传统的租…...

下周,Coinbase将被纳入标普500指数

Coinbase加入标普500指数紧随比特币突破10万美元大关之后。加密资产正在日益成为美国金融体系的一部分。大型机构已获得监管批准创建现货比特币交易所交易基金,进一步推动了加密货币的主流化进程。 加密货币行业迎来里程碑时刻,Coinbase即将加入标普500…...

C++(17):引用传参

目录 一、核心概念 二、代码示例:对比指针和引用 1. 指针传参的问题 2. 引用传参的改进 三、引用传参的优势 四、总结 一、核心概念 别名机制:引用是变量的别名,操作引用等同于操作原变量。 避免拷贝:直接操作原始变量&…...

文章记单词 | 第82篇(六级)

一,单词释义 continual /kənˈtɪnjuəl/- adj. 持续不断的;频繁的instinct /ˈɪnstɪŋkt/- n. 本能;直觉weekday /ˈwiːkdeɪ/- n. 工作日(周一至周五)glove /ɡlʌv/- n. 手套process /ˈprəʊses/- n. 过程&a…...

30天通过软考高项-质量论文

近年来,尤其随着5G技术的普及及使用,JZ各单位接入数据的类型及容量呈现明显上升趋势,电信诈骗等案件频发,且GA部明确各地的国产化时间要求。TJ原有的大数据应用系统已无法满足完全满足jz单位对大数据的使用的要求。TJJZ总队于23年12月正式启动算力中心项目,该项目合同额13…...

容器化-k8s-使用和部署

一、K8s 使用 1、基本概念 集群: 由 master 节点和多个 slaver 节点组成,是 K8s 的运行基础。节点: 可以是物理机或虚拟机,是 K8s 集群的工作单元,运行容器化应用。Pod: K8s 中最小的部署单元,一个 Pod 可以包含一个或多个紧密相关的容器,这些容器共享网络和存储资源。…...

C++ Kafka客户端(cppkafka)安装与问题解决指南

一、cppkafka简介 cppkafka是一个现代C的Apache Kafka客户端库,它是对librdkafka的高级封装,旨在简化使用librdkafka的过程,同时保持最小的性能开销。 #mermaid-svg-qDUFSYLBf8cKkvdw {font-family:"trebuchet ms",verdana,arial,…...

一发入魂:极简解决 SwiftUI 复杂视图未能正确刷新的问题(中)

概述 各位似秃非秃小码农们都知道,在 SwiftUI 中视图是状态的函数,这意味着状态的改变会导致界面被刷新。 但是,对于有些复杂布局的 SwiftUI 视图来说,它们的界面并不能直接映射到对应的状态上去。这就会造成一个问题:状态的改变并没有及时的引起 UI 的变化。 如上图所示…...

Go语言处理HTTP下载中EOFFailed

在 Go 语言中使用 HTTP 下载文件时遇到 EOF 或 Failed 错误,通常是由于网络连接问题、服务器中断、未正确处理响应体或并发写入冲突等原因导致的。以下是详细的解决方案: 1. 检查错误类型并重试 io.EOF 错误可能表示连接被服务器关闭,而 Fai…...

opencloudos 安装 mosquitto

更新系统并安装依赖 sudo dnf update -y sudo dnf install -y epel-release # 若需要 EPEL 额外仓库 sudo dnf install -y gcc-c cmake openssl-devel c-ares-devel libuuid-devel libwebsockets-devel安装 Mosquitto 通过默认仓库安装(推荐) sudo dn…...

基于Scrapy-Redis的分布式景点数据爬取与热力图生成

1. 引言 在旅游行业和城市规划中,热门景点的数据分析具有重要意义。通过爬取景点数据并生成热力图,可以直观展示游客分布、热门区域及人流趋势,为商业决策、景区管理及智慧城市建设提供数据支持。 然而,单机爬虫在面对大规模数据…...

Java 使用 PDFBox 提取 PDF 文本并统计关键词出现次数(附Demo)

目录 前言1. 基本知识2. 在线URL2.1 英文2.2 混合 3. 实战 前言 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD…...

将 Element UI 表格元素导出为 Excel 文件(处理了多级表头和固定列导出的问题)

import { saveAs } from file-saver import XLSX from xlsx /*** 将 Element UI 表格元素导出为 Excel 文件* param {HTMLElement} el - 要导出的 Element UI 表格的 DOM 元素* param {string} filename - 导出的 Excel 文件的文件名(不包含扩展名)*/ ex…...

Android Development Roadmap

🔧 Android Development Roadmap (Practical First → Theory Later) Here’s a lean, real-world roadmap tailored to the mindset — build-first, theory-when-needed: 🟢 Stage 1: Core Setup & Workflow (Done ✅) ✅ Install Android Studio…...

【Linux网络】 HTTP cookie与session

HTTP cookie与session 引入HTTP Cookie 定义 HTTP Cookie(也称为Web Cookie、浏览器Cookie或简称Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。通常&…...

OrangePi Zero 3学习笔记(Android篇)11 - IR遥控器

目录 1. 查询IR信息 1.1.1 sunxi-ir-uinput 1.1.2 sunxi-ir 2. 调试键值 3. 匹配遥控器 4. Power键的特殊处理 5. 验证 ir的接口在13pin接口上,需要使用到扩展板。 1. 查询IR信息 在shell的界面输入命令: dumpsys input 分析返回信息&#xf…...

uniapp实现在线pdf预览以及下载

uniapp实现在线pdf预览以及下载 在线预览 遇到的问题 后端返回一个url地址,我需要将在在页面中渲染出来。因为在浏览器栏上我输入url地址就可以直接预览pdf文件,因此直接的想法是通过web-view组件直接渲染。有什么问题呢?在h5端能够正常渲…...

【蓝桥杯省赛真题49】python偶数 第十五届蓝桥杯青少组Python编程省赛真题解析

python偶数 第十五届蓝桥杯青少组python比赛省赛真题详细解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...

突发,苹果发布下一代 CarPlay Ultra

汽车的平均换代周期一般都超过5年,对于老旧燃油车而言,苹果的 Carplay 是黑暗中的明灯,是延续使用寿命的利器。 因为你可能不需要冰箱彩电大沙发,但一定需要大屏车载导航、倒车影像、车载听歌。如果原车不具备这个功能&#xff0…...

鸿蒙OSUniApp开发富文本编辑器组件#三方框架 #Uniapp

使用UniApp开发富文本编辑器组件 富文本编辑在各类应用中非常常见,无论是内容创作平台还是社交软件,都需要提供良好的富文本编辑体验。本文记录了我使用UniApp开发一个跨平台富文本编辑器组件的过程,希望对有类似需求的开发者有所启发。 背景…...

Axure设计的“广东省网络信息化大数据平台”数据可视化大屏

在数据驱动决策的时代,数据可视化大屏成为了展示数据、洞察趋势的重要工具。今天,让我们一同深入了解由Axure设计的“广东省网络信息化大数据平台”数据可视化大屏,看看它如何通过精心的布局和丰富的图表类型,将复杂的数据以直观易…...

2025认证杯数学建模第二阶段C题完整论文(代码齐全)化工厂生产流程的预测和控制

2025认证杯数学建模第二阶段C题完整论文(代码齐全)化工厂生产流程的预测和控制,详细信息见文末名片 第二阶段问题 1 分析 在第二阶段问题 1 中,由于在真实反应流程中输入反应物的量改变后,输出产物会有一定延时&#…...

Redis——底层数据结构

SDS(simple dynamic string): 优点: O1时间获取长度(char *需要ON)快速计算剩余空间(alloc-len),拼接时根据所需空间自动扩容,避免缓存区溢出(ch…...

ChatGPT 能“记住上文”的原因

原因如下 你把对话历史传给了它 每次调用 OpenAI 接口时,都会把之前的对话作为参数传入(messages 列表),模型“看见”了之前你说了什么。 它没有长期记忆 它不会自动记住你是谁或你说过什么,除非你手动保存历史并再次…...

大疆无人机自主飞行解决方案局限性及增强解决方案-AIBOX:特色行业无人机巡检解决方案

大疆无人机自主飞行解决方案局限性及增强解决方案-AIBOX:特色行业无人机巡检解决方案 大疆无人机是低空行业无人机最具性价比的产品,尤其是大疆机场3的推出,以及持续自身产品升级迭代,包括司空2、大疆智图以及大疆智运等专业软件和…...

医学影像系统性能优化与调试技术:深度剖析与实践指南

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...

day 25

*被遗忘的一集 程序:二进制文件,文件存储在磁盘中,例如/usr/bin/目录下 进程:进程是已启动的可执行程序的运行实例。 *进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程 *进程还具有并…...

吉客云数据集成到金蝶云星空的最佳实践

吉客云数据集成到金蝶云星空的技术案例分享 在本次技术案例中,我们将探讨如何通过仓库方案-I0132,将吉客云的数据高效集成到金蝶云星空。此方案旨在解决企业在数据对接过程中遇到的多种技术挑战,包括数据吞吐量、实时监控、异常处理和数据格…...