当前位置: 首页 > 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.gsyq.cn/news/63157.html

相关文章:

  • 2025年11月治鼻炎产品推荐:一份详尽的清单与选择指南
  • 成为中国中小制造业企业数字营销领域的引领者 ——纪实西安动力无限的信息化赋能之路
  • SKI欧洲原装进口瓷砖:汇聚国际匠心,打造高端家居空间
  • Java NIO框架和传统的IO框架有什么区别?
  • 如何在Java中使用NIO框架?
  • 为什么说白瑞芳是最适合基础巩固的高中数学老师?
  • 别再闹笑话了!OpenPLC ≠ PLCopen,一文讲透真正的区别
  • 全自动工业滤水器厂家推荐:连云港华博与博璟源的专业之选
  • 美容院选择皮肤检测仪的5大标准:安德颜析MINI如何满足专业需求
  • 完整教程:集群环境安装与部署 Hadoop
  • 2025年下半年特氟龙喷涂、聚四氟乙烯喷涂、陶瓷喷涂、碳化钨喷涂、聚四氟乙烯管道设备厂家口碑推荐
  • 251127
  • 成都动力无限:深耕十五载,以专业短视频代运营赋能企业增长
  • 2025年下半年特氟龙喷涂、聚四氟乙烯喷涂、陶瓷喷涂、碳化钨喷涂、聚四氟乙烯管道设备厂家综合推荐指南
  • 3 天从 0 入门 SQL:交易所 Market Surveillance 实战速成(Wash Trading / Spoofing / Pump Dump)
  • 2025年下半年拖车绳/三股绳/拖拉绳/弹力绳工厂 top 5 推荐
  • 怎样减少库存对资金的占用?企业老板最该先解决的,其实就是这三件事
  • 容器终端常用命令
  • Raney 引理小记
  • 2025年下半年拖车绳/三股绳/拖拉绳/弹力绳厂家前五推荐
  • 头大的内存泄漏
  • 金蝶ERP服务商金标准:数据治理与流程梳理能力哪家强?——上海宝蝶排名第一
  • 2025河南本地网站建站公司推荐:无限动力科技,11年深耕的数字化伙伴
  • 2025 河南短视频口碑榜:无限动力助工厂获客类推广软文
  • Windows Dirty Pipe漏洞CVE-2022-22715分析与利用
  • 2025年金蝶ERP哪家代理商能承接海外项目实施交付——上海宝蝶首屈一指
  • 人机交互BS结构界面 -
  • 2025 年快速退火炉厂家最新推荐榜,技术实力与市场口碑深度解析,呈现高性能设备优质品牌晶圆 / 高温 / 桌面 / 半自动 / 全自动 / 芯片 / 硅片 / RTP 快速退火炉公司推荐
  • Qwen是“源神”?实际上GLM-4.6才是被低估的黑马
  • 详细介绍:论文阅读笔记——自注意力机制