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

蓝牙音频协议——安卓开发

协议

AVRCP(Audio Vidoe Remote Control Protocol,音频视频远程控制协议),区分为CT(Control)和TG(Target)两端,TG就是受控端。
image

A2DP(Advenced Audio Distribution Profile,即蓝牙音频传输模型协定),和音频模型一样区分Sink和Source两端
image

AVRCP 用于控制,如播放/音量等按键。安卓属性 bluetooth.profile.avrcp.target.enabled
A2DP 用于音频流传输,除此之外还有LDCP等等更好的

底层

基于蓝牙HCI串口协议

抓包btsnoop后使用协议分析软件
如Wireshark/ellisys better_analysis打开

setprop persist.bluetooth.btsnooppath /data/misc/bluetooth/logs/btsnoop_hci.cfa
setprop persist.bluetooth.btsnoopenable true
setprop persist.bluetooth.btsnooplogmode full# 重启
# 抓 btsnoop  之前,先关蓝牙,然后再打开
复现问题后需要把 btsnoop 文件及时报错,否则重新开关蓝牙后之前的 btsnoop 会被覆盖
同时,导出此过程 logcat
adb pull /data/misc/bluetooth/logs/ ./
adb logcat -d > bt_log.log
```c## RK蓝牙文档说明
### Libbt
负责蓝牙初始化,如加载蓝牙固件等操作。不同厂家都有定制化。
如 hardware/broadcom/libbt和 hardware/realtek/rtkbt/code/lifbt-vendor。
libbt一般只需要配置蓝牙端口和固件路径即可。
配置文件:- hardware/broadcom/libbt/conf/rockchip/rksdk/bt_vendor.conf- hardware/realtek/rtkbt/code/vendor/etc/bluetooth/rtkbt.conf### bluedroid
位于 system/bt 下,产物为 libbluetooth.so日志级别: - 板卡 /system/etc/bt_stack.conf- 属性 persist.bluetooth.btsnoopenable 和 persist.bluetooth.btsnoopsize- 日志路径:/data/misc/bluetooth/logs/btsnoop_hci.log例子
```c
[persist.bluetooth.btsnooppath]: [/data/misc/bluetooth/logs/btsnoop_hci.log]
[persist.bluetooth.btsnoopsize]: [0xffff]
[persist.bluetooth.disableabsvol]: [true] 绝对音量,禁用后CT可以调节TG音量

pcba bt测试

测试代码默认端口为 /dev/ttyS0 ,可以通过 /system/etc/bt_stack.conf 配置

AVRCP报文

image

音量控制按键走的是VENDOR DEPENDENT操作码[0x1958]报文,CT发送,TG确认。
播放暂停走的是Pass Through
AVRCP CT和TG都支持 CONTROL/STATUS/NOTIFY三种。
image

例子:
image

image

安卓源码

AN16为例,蓝牙模块 /packages/modules/Bluetooth

键值转换 android/app/src/com/android/bluetooth/avrcp/helpers/AvrcpPassthrough.java
image

例子:某平台音量键正常,但播放暂停下一首没有响应
image

发送KEYCODE_MEDIA_PAUSE

input keyevent 127 

可以看到歌曲正常暂停了,这里可以确认上层没有发送该键值。

过滤TG日志:

logcat|grep -i AvrcpTargetService &
logcat|grep -i OSMediaPlayer &

image

image

查看源码,发现发送按键是在sendMediaKeyEvent

过滤日志没找到,查看源码发现日志等级不够,但有dump接口

 dumpsys bluetooth_manager|grep sendMediaKeyEvent

image

底层一切正常,那么就是软件本身的问题
实际上,安卓APP需要适配一个叫 MediaSession 的东西,才能有媒体控制的功能。
image

http://www.jsqmd.com/news/53171/

相关文章:

  • 2025年Q4痔疮膏品牌哪家好?TOP10测评榜单,内痔便血/外痔肉球/术后修护全适配推荐
  • 第六篇 Scrum 冲刺博客
  • 第二篇Scrum 冲刺博客
  • 第五篇 Scrum 冲刺博客
  • 2025年11月治鼻炎产品推荐:一份详尽的清单与选择指南
  • GitHub 热榜项目 - 日榜(2025-11-01) - 指南
  • 成为中国中小制造业企业数字营销领域的引领者 ——纪实西安动力无限的信息化赋能之路
  • 2025年Q4国内AI搜索优化公司排行榜,最新口碑认证+AI平台适配测评推荐
  • 2025年11月治鼻炎产品推荐:高性价比产品排行榜与使用评价
  • 揭晓2025年护眼吸顶灯品牌TOP推荐
  • SKI欧洲原装进口瓷砖:汇聚国际匠心,打造高端家居空间
  • Java NIO框架和传统的IO框架有什么区别?
  • 实战利用LLM辅助小程序逆向与HTTP报文漏洞挖掘
  • 2025 上海办公室 商铺装修选型指南:从需求匹配到避坑的全流程决策手册​
  • buildx构建多平台镜像 - 教程
  • 2025 年 11 月二手车市场权威推荐榜:昆山二手车,上海二手车,浙江二手车,太仓二手车,精选车源与高性价比购车指南
  • 如何在Java中使用NIO框架?
  • 返回值类
  • 为什么说白瑞芳是最适合基础巩固的高中数学老师?
  • 全自动滤水器厂家推荐:连云港华博与博璟源的专业之选
  • 全自动工业滤水器厂家推荐:连云港华博与博璟源的专业之选
  • 美容院选择皮肤检测仪的5大标准:安德颜析MINI如何满足专业需求
  • 2025年11月漱口水品牌推荐列表与市场口碑分析报告
  • 完整教程:集群环境安装与部署 Hadoop
  • [题解]考前一些贪心技巧题
  • mysql查看binlog, 追溯历史
  • 实用指南:Jenkins Pipeline 快速开始
  • 2025年下半年特氟龙喷涂、聚四氟乙烯喷涂、陶瓷喷涂、碳化钨喷涂、聚四氟乙烯管道设备厂家口碑推荐
  • 两款开源PLC软件推荐,ARMxy系列完美适配!
  • 251127