当今这个音视频无处不在的时代,音频跟踪会话ID(AudioTrack Session ID)是个很重要的参数,可以用来实现音频相关的一些特效。接下来的内容我们就探究如何在安卓蓝牙系统中获取该id。

熟悉蓝牙音乐播放流程的同学都了解蓝牙音乐AVDTP的控制流与音频流以及AVRCP是如何作用的,以如下的交互图简单介绍下:

AVDTP连接阶段分为四步:

1、 发现对端支持的编码方式有哪几种

2、 获取每种编码方式的参数

3、 双方协商确定一个最优的编码方式

4、 建立该编码方式的AVDTP连接

音频播放过程中只要创建的audiotrack不变则对应的session id就会保持不变。播放蓝牙音乐也是这样。那蓝牙音乐对应的audiotrack session id从哪儿获取呢?

创建audiotrack都会生成对应的session id,那问题就简单多了,蓝牙音乐播放过程中audiotrack在哪儿被创建的?

蓝牙音乐播放分为source、sink两端,source一般为音频流输出端,sink接收音频流方。这篇文章主要是已sink端来讲解蓝牙音频播放流程。Sink方(蓝牙耳机、音响、车载等)的蓝牙芯片接收到音频流后通过HCI送到蓝牙协议栈,该协议栈中直接通过audio track送入安卓音频系统播放音乐。

结合蓝牙协议栈的代码可以快速找到audio track的创建处为:BtifAvrcpAudioTrackCreate(),通过sp track可以实现session id的获取。

那如何将该id送到application层呢?这块就需要我们了解安卓蓝牙系统中媒体音频的架构,从而添加接口来获取session id。

安卓系统中关于媒体音频的架构类似于整个蓝牙系统,见下图:

根据上面的系统架构图,则获取audiotrack session id的接口主要和framework、service、JNI以及Bluedroid中btif都有关系。大概的时序图如下:

至此audiotrack session id就通过新增接口被相关应用获取。

ktm390蓝牙连接安卓_蓝牙音乐AudioTrack Session ID的获取相关推荐

  1. 获取sessionid_蓝牙音乐AudioTrack Session ID的获取

    当今这个音视频无处不在的时代,音频跟踪会话ID(AudioTrack Session ID)是个很重要的参数,可以用来实现音频相关的一些特效.接下来的内容我们就探究如何在安卓蓝牙系统中获取该id. 熟 ...

  2. ktm390蓝牙连接安卓_车机蓝牙连接常见问题说明

    汽车已成为了人民生活中的必需品,大家开车过程中或多或少会碰到汽车娱乐主机使用蓝牙时的闹心问题,从而影响开车的心情,今天小编给老铁们列出几条闹心问题做下说明. 问题1:蓝牙连接时无法播放苹果手机的微信语 ...

  3. 通用蓝牙打印安卓_宣布通用打印:基于云的打印解决方案

    通用蓝牙打印安卓 Universal Print moves key Windows Server print functionality to the Microsoft 365 cloud, so ...

  4. android低功耗蓝牙连接失败_低功耗蓝牙 AoA定位系统为室内定位和资产跟踪 提供亚米级精度位置服务...

    蓝色创源使用Nordic nRF52833 SoC实现兼容智能手机的低功耗位置服务网络. *定位解决方案提供商蓝色创源(北京)科技有限公司选择使用其nRF52833低功耗蓝牙(Bluetooth® L ...

  5. c# 蓝牙虚拟串口_蓝牙模块——基础知识介绍

    1. 数据透传 蓝牙模块可以通过串口(SPI.IIC)和MCU控制设备进行数据传输. 蓝牙模块可以做为主机和从机.主机就是能够搜索别的蓝牙模块并主动建立连接,从机则不能主动建立连接,只能等别人连接自己 ...

  6. android 蓝牙 连接失败,Android蓝牙连接 – 服务发现失败

    我正在尝试创建一个基本的蓝牙应用程序,用于测试设备. 我从developer.android获得了代码. 这是链接: http : //developer.android.com/guide/topi ...

  7. Android 检查版本更新服务并下载,BLE蓝牙连接,BLE蓝牙连接1对多及通用工具

    https://github.com/inksnow/InksLibrary 引用方法: 1. aar 应用 apply plugin: 'com.android.application' andro ...

  8. ktm390蓝牙连接安卓_KTM Duke 390 机油更换(自助篇)

    邦客JayMeister自从把自己的鲜橙多接回家就没换机油机滤,官方说首保1000公里(不知道是怎么算的)既然官方让换,那就换吧! 摩托瑞士15w 50两桶,说明书说加1.6L.工口扳手10mm和13 ...

  9. ipad怎么连接电脑_蓝牙的使用,蓝牙耳机怎么连接手机,怎么连接电脑

    蓝牙耳机使用方便深受大家的喜爱,有些朋友刚使用,不知道蓝牙耳机怎么连接手机,怎么连接电脑,本文介绍下一般的蓝牙耳机怎么连接怎么使用. 蓝牙耳机怎么连接手机 蓝牙耳机 由于,不同蓝牙耳机不可避免的存在差 ...

最新文章

  1. 应用程序“DEFAULT WEB SITE/ICLOCK”中的服务器错误
  2. 限制服务器访问指定网站,如何允许或限制某一国或地区的用户访问网站
  3. 浮点数赋值给整数_初学者专题:变量和赋值
  4. (转) PowerDesigner中Table视图同时显示Code和Name
  5. Failed to issue method call Unit mysql service failed to lo
  6. python连接数据库设置编码_Python学习18-连接数据库
  7. 如何交叉编译 移植 QT
  8. centos7按报错dracut
  9. apktool+dex2jar+xjad反编译APK文件
  10. 慢速DoS攻击工具slowhttptest(网站压力测试工具)
  11. java xps生成_Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)...
  12. javascript计算两个时间差
  13. MySQL Order By 使用方法
  14. 工业触摸一体机的触摸屏原理和维护
  15. LayUI实现Checkbox复选框的单选及取消单选,即只能选一个或者全都不选
  16. NLP模型笔记2022-11:CTB5和CTB8数据集预处理 【PennTreebank 和Chinese Treebank】
  17. 4.再模仿一个算术题
  18. 【多人会议功能】uniapp - 微信小程序 - 腾讯云
  19. coredata 详解
  20. vs2008使用技巧推荐

热门文章

  1. C语言 内存分配 地址 指针 数组 参数 解析
  2. IOS模拟登录之沙盒原理
  3. oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
  4. ⅰcp经济模型_干货!来自清华小哥哥的全家桶教程——手把手教你在本地构建 Nervos AppChain...
  5. python 变量类型注释_变量类型、命名规则及代码注释
  6. pyqt 槽任意参数_PyQt5信号与槽机制入门(一)
  7. python自动化运维快速入门-Python自动化运维快速入门
  8. 盘点2010年十大出版事件 文著协“宣战”百度文库
  9. 查找数组是否有重复元素
  10. 第一章 docker 镜像,容器,仓库基本命令(二)