车载端蓝牙AVRCP获取音乐信息btsnoop 分析

news/2024/12/29 5:04:35/

近几年新能源车载火出了天际,各个厂商新势力转战新能源!

车载设备开发,软件娱乐系统,离不开蓝牙,对蓝牙稳定性要求也越来越高,对于车载使用蓝牙音乐的功能,主要有以下这些,通过AVRCP控制歌曲暂停、播放、上一曲、下一曲,同步手机端歌曲信息 进度、作者、歌词、播放状态、音量同步等

经常也会遇到以下的一些问题:

车载点击暂停/播放,为什么几秒后才暂停/播放?

车载点击暂停/播放,为什么实际没有暂停/播放?

车载点击暂停,实际声音暂停,歌曲信息一直在更新,为什么?

车载进度position和手机端不同步?

车载播放显示歌曲信息和手机端不一致?

车载进度position 2-3s 跳动一次,为什么?

车载播放歌曲作者显示成歌词,为什么?

车载播放不显示歌曲歌词信息等?

希望在以下的讲解中能够自行找到答案,另外AVRCP中 CT TG概念,通知 event等请在以前文章中自行翻阅,不再重复解释,下面进入正文

1.播放

播放的按键触发为一组按下抬起动作,对应btsnoop为首先车载host下发play的Button Pushed手机回应accept,随后按键抬起车载host下发Button Released,对应手机accept,完成播放按键的下发

按键下发不代表音乐成功播放,此时手机端过来一个CHANGE的回应,携带的play status为playing状态,则成功从车载端触发播放,一开始注册通知事件EVENT PLAYBACK STATUS CHANGED则是在AVRCP刚连上的时候,INTERIM为paused状态,change playing事件完成后,一组通知结束,车载host继续注册通知EVENT PLAYBACK STATUS CHANGED,手机controller回复INTERIM(中间态)为playing状态,等待下一次的change response



 2.暂停

暂停的按键事件也是对应一组按下抬起,与play有差异的则是Operation Id标志为pause

 接播放的interim---playing状态,此时手机端过来EVENT PLAYBACK STATUS CHANGED的change事件,把播放状态切换为paused状态,此时标志暂停成功,然后继续重复注册下一次通知

3.上一曲

同样是一组键值按下抬起,Operation Id为backward,然后是暂停状态下切歌,手机会直接过来更新通知至playing状态拉起播放,另外切歌会对应一组EVENT TRACK CHANGED的通知变化
 

 4.下一曲

对应Operation Id为forward,且是在播放状态切歌,此时我们可以看到,手机端先更新了一下paused状态再更新为playing状态,但值得注意的是蓝牙用于传输音频数据的AVDTP则一直处于start状态未进行suspend

 5.歌曲进度position

蓝牙音乐的歌曲信息position在连上AVRCP时就会注册通知

参数:Playback interval in seconds: 1(告诉手机端需要1s更新一次position给车载)

实际Android源码中一般默认为2s/3s更新一次,那歌曲进度会一直2-3s跳动一下进度吗?实际不会,车载端 Android还会通过get play status 每秒去获取手机端播放状态和进度,如果不去每秒get play status,则会出现2-3s跳进度条问题,所以直接设置Playback interval in seconds为1,每秒更新则可以完美解决该问题

 手机端从controller每1s更新position通知,同时车载host每秒去Get Play Status更新position

6.歌曲信息

 蓝牙通过Get Element Attribute去更新歌曲信息,获取歌曲时长、标题、作者、歌词等信息
 


http://www.ppmy.cn/news/378191.html

相关文章

总结899

目标规划: 月目标:6月(线性代数强化9讲,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 今日已做: 1.读了两篇文章&a…

android -- 蓝牙 bluetooth (五)接电话与听音乐

前段时间似乎所有的事情都赶在一起,回家、集体出游、出差,折腾了近一个月,终于算暂时清静了,但清静只是暂时,估计马上又要出差了,所以赶紧把蓝牙这一部分的文章了结下,按之前提到的目录&#xf…

Android 蓝牙 A2dp 播放音乐流程再探究 --- setDeviceConnectionStateInt(二)

同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 一、概述 我们来看下a2dp下面的播放场景吧。a2dp是蓝牙用来播放音乐的协议,正常情…

Android音乐播放器制作(一)扫描本地音乐显示在手机上

思路 首先是扫描本地所有的音频文件,然后全部装进集合当中,接下来就是用ListView展示在屏幕上,大概就是这几个步骤了,接下来细讲 创建一个容器 进行过数据解析的朋友都应该知道JavaBean吧,用来装载解析出来的数据&…

蓝牙音乐之A2DP

蓝牙音乐之A2DP 本篇文章简单聊聊蓝牙音乐涉及到的A2DP协议,大家平常使用蓝牙耳机听音乐就是通过该协议实现的,此协议有时也被称为媒体音频协议。通过手机蓝牙设置中已连接的设备可以查看具体连接的哪些协议,那其中的媒体音频那一项就对应于本…

基于CK6855M1设计的离线语音识别蓝牙音乐球泡灯的设计

一.方案概述 随着人类文明的进步,21世纪的人们对物质的要求也越来越高。在灯具照明市场层面,很多传统灯具厂的经营状况也越来越不乐观,其原因是: 1.传统灯具产品生产制造门款低,利润薄 2.竞争激烈,各生产…

蓝牙音乐播放芯片改怎么选型?

蓝牙音乐播放芯片改怎么选型? 随着蓝牙技术的成长,市面上的蓝牙方案不管是在技术层面还是市场占用率方面,这些年都发生了翻天覆地的变化。现在市面上的蓝牙芯片多而且杂,那么,蓝牙音乐播放芯片怎么选择呢?…

BLE-HID 音乐/相机控制

以SDK下自带的 HID 鼠标示例为例说明: 音乐控制: 代码中 main中调用了services_init初始化几个服务。 其中调用hids_init 来初始化hid服务 函数中首先定义了 static uint8_t rep_map_data[] 这个数组变量。 这个变量里面存的值就是 报告描述符&…