android 获取蓝牙设备id_安卓蓝牙系统中如何获取蓝牙音乐的音频跟踪会话ID
原标题:安卓蓝牙系统中如何获取蓝牙音乐的音频跟踪会话ID
蓝牙音乐AudioTrack Session ID的获取
当今这个音视频无处不在的时代,音频跟踪会话ID(AudioTrack Session ID)是个很重要的参数,可以用来实现音频相关的一些特效。接下来的内容我们就探究如何在安卓蓝牙系统中获取该id。
熟悉蓝牙音乐播放流程的同学都了解蓝牙音乐AVDTP的控制流与音频流以及AVRCP是如何作用的,以如下的交互图简单介绍下:
连接流程
AVDTP连接阶段分为四步:
1、 发现对端支持的编码方式有哪几种
2、 获取每种编码方式的参数
3、 双方协商确定一个最优的编码方式
4、 建立该编码方式的AVDTP连接
AVDTP连接流程
音频播放过程中只要创建的audiotrack不变则对应的session id就会保持不变。播放蓝牙音乐也是这样。那蓝牙音乐对应的audiotrack session id从哪儿获取呢?
创建audiotrack都会生成对应的session id,那问题就简单多了,蓝牙音乐播放过程中audiotrack在哪儿被创建的?
蓝牙音乐播放分为source、sink两端,source一般为音频流输出端,sink接收音频流方。这篇文章主要是已sink端来讲解蓝牙音频播放流程。Sink方(蓝牙耳机、音响、车载等)的蓝牙芯片接收到音频流后通过HCI送到蓝牙协议栈,在协议栈中直接通过audio track送入安卓音频系统播放音乐。
结合蓝牙协议栈的代码可以快速找到audio track的创建处为:BtifAvrcpAudioTrackCreate(),通过sp<:audiotrack> track可以实现session id的获取。
那如何将该id送到application层呢?这块就需要我们了解安卓蓝牙系统中媒体音频的架构,从而添加接口来获取session id。
安卓系统中关于媒体音频的架构类似于整个蓝牙系统,见下图:
蓝牙媒体音频系统架构(SINK)
根据上面的系统架构图,则获取audiotrack session id的接口主要和framework、service、JNI以及Bluedroid中btif都有关系。大概的时序图如下:
获取id时序图
至此audiotrack session id就通过新增接口被相关应用获取,实现不同的功能。返回搜狐,查看更多
责任编辑:
android 获取蓝牙设备id_安卓蓝牙系统中如何获取蓝牙音乐的音频跟踪会话ID相关推荐
- vim的高级用法配置以及在系统中如何获取帮助
vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...
- 在Windows, Mac, Linux三种系统中分别获取wifi密码的方式
在Windows, Mac, Linux三种系统中分别获取wifi密码的方式 1. Windows netsh wlan show profile name=wifi名称 key=clear | fi ...
- android 获取蓝牙设备id_【报Bug】安卓平台获取不到蓝牙设备服务列表(ios可以)...
产品分类: uniapp/App PC开发环境操作系统: Windows PC开发环境操作系统版本号: win10 HBuilderX类型: 正式 HBuilderX版本号: 3.0.7 手机系统: ...
- android 版本分布 最新,安卓手机系统版本分布:Android 9.0占比达34%!
原标题:安卓手机系统版本分布:Android 9.0占比达34%! 如今,就国内智能手机市场来说,华为.小米.OPPO.vivo等智能手机厂商不仅在硬件配置上激烈较量,比如采用最新的处理器,再比如手机 ...
- vivo21a点击android版本,vivoX21适配安卓P系统
许多小伙伴们应该都是知道最近即将推出的Android P系统吧,这个系统十分的强大,如果你使用的是vivoX21那么你就有福利了,你可以使用vivoX21 Android P升级这个系统.Androi ...
- android 根据时间获取周几_android 调用系统 calendars 如何获取一个指定日期的所有日程 event。...
android 调用系统 (CalendarContract)calendars 如何获取一个指定日期的所有日程(包含周期事件) ? 难点在于,很多event存的时候是有rrule的,也就是周期. 以 ...
- android版本如何升级包,安卓手机系统怎么升级?安卓手机系统升级教程
安卓手机系统怎么升级 随着系统的更新换代,相信不少网友对安卓系统的升级都很感兴趣,而这里指的一般都是通过刷机来升级,好像不刷就浑身不舒服一样.安卓系统升级可以在电脑上面下载官方的升级包,或者像小米系统 ...
- Android Studio 源码移植到系统中
参考文章:https://blog.csdn.net/weixin_44008788/article/details/120990207 主要是添加 Android.mk文件,指定src.res.An ...
- android切换账户功能,安卓9系统开启多用户 android 9支持多用户切换吗?
android 9支持多用户切换吗? 消息说是支持的呢 Android中的APP如何实现多帐号切换? 这个并不难,你可以同时在服务器的数据库中关联一个主键下的多个账户,每一个账户都有唯一的主键,用主键 ...
最新文章
- 【问题收录】ImportError No module named MySQLdb 问题解决
- python难度大的题_早看少被坑!Python 最难的问题
- GC之二--GC是如何回收时的判断依据、shallow(浅) size、retained(保留) size、Deep(深)size...
- mysql 5.7 解决 set global slow_query_log=on;报错
- java 类对象可以调用静态方法吗
- 气象背景场_“把脉”风雨 服务为民——甘肃研究型气象预报业务体系发展扫描...
- [NodeJs] 如何获取项目的根路径?
- ubuntu 设置静态路由_Linux系统添加永久静态路由的方法
- [R时间序列]ARMA模型如何分辨拖尾与截尾
- 一个合理的生产环境的 Web 应用程序应该是什么样子的
- System.SetString - 获取字符串
- EMC-电磁兼容-电磁骚扰的耦合机理
- poj3294Life Forms
- 新手小白如何短时间内熟练运营微信公众号
- 如果看广告还有钱拿,你还会嫌广告太多么?
- 基因组大数据变异检测算法的并行优化
- 数据库分表分库策略和原则
- 微课录制软件哪个好用?微课制作方法分享
- 软电话测试工具:SIPP
- [附源码]Java计算机毕业设计SSM城市智能公交系统
热门文章
- mysql创建索引降序_Mysql中的降序索引底层实现
- 构建具有丰富功能的交互式 Kiosk
- 物体成瘾性_如何克服数字成瘾和更多的意志力
- 【交互设计】什么是微交互
- 两部苹果手机同步照片_苹果手机误删照片怎么恢复?
- python-linux-获取多台远端机器指定文件并下载至本地(s**y-日志审计)
- cura切片操作学习
- 沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第六章 接收端结构及功能说明
- SendCloud从注册到邮件发送使用心得
- 网上流传“魔方文化启示录”