Files
Obsidian/项目文档/同力/蓝牙音乐/蓝牙音乐模块流程与开发指南.md
T
2026-11-05 14:35:04 +08:00

85 lines
2.8 KiB
Markdown

# 蓝牙音乐模块流程与开发指南
> 这是入口文档。
> 本次排版已去掉 Mermaid 图,改为“纯文本流程块 + 编号步骤表 + 拆分文档”,适合 Obsidian 直接阅读。
## 推荐阅读顺序
| 顺序 | 文档 | 先看什么 |
|---|---|---|
| 1 | [[00_总览_一页看懂]] | 先建立模块整体印象。 |
| 2 | [[01_启动初始化流程]] | 看蓝牙音乐 SDK 是怎么启动的。 |
| 3 | [[02_A2DP连接与断开流程]] | 看“有没有声音通道”怎么判断。 |
| 4 | [[03_AVRCP歌曲信息与播放状态流程]] | 看歌名、歌手、播放状态从哪里来。 |
| 5 | [[04_播放控制与音频焦点流程]] | 看播放、暂停、切歌、焦点抢占。 |
| 6 | [[05_Launcher卡片流程]] | 看桌面卡片怎么显示和控制蓝牙音乐。 |
| 7 | [[06_开发入口_风险点_测试清单]] | 开发前定位文件、风险点和测试项。 |
## 最短主链路
### 用户点击播放
```text
用户
↓
BluetoothMusicActivity.onClick()
↓
BtMusicViewModel.playBtMusic()
↓
BtMusicControlManager.playBtMusic()
↓
BtMusicManager.requestFocus()
↓
BtMusicAudioManager.requestAudioFocus()
↓
BtMusicManager.playBtMusic()
↓
BluetoothAvrcpClient.play()
↓
MediaControllerCompat.TransportControls.play()
↓
手机音乐 App 开始播放
```
### 手机切歌后刷新页面
```text
手机音乐 App 切歌
↓
Android 蓝牙栈 AVRCP 元数据变化
↓
MediaBrowserClient.onMetadataChanged()
↓
BluetoothAvrcpClient.onMetadataChanged()
↓
BtMusicManager 解析歌曲信息
↓
BtMusicViewModel.mLiveDataMusicInfo
↓
BluetoothMusicActivity 更新歌名/歌手/封面/时长
↓
BtInfoPushManager.sendMusicInfoToLauncher()
↓
Launcher 蓝牙音乐卡片更新
```
## 当前代码根路径
```text
F:\zdCode\tongli
```
## 蓝牙音乐最核心文件
| 文件 | 作用 |
|---|---|
| `YX_BlueTooth\src\main\java\com\yaxon\bluetooth\main\BluetoothMusicActivity.java` | 蓝牙音乐页面。 |
| `YX_BlueTooth\src\main\java\com\yaxon\bluetooth\viewmodel\BtMusicViewModel.java` | 页面状态和控制转发。 |
| `YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\manager\BtMusicControlManager.java` | 对外音乐控制入口。 |
| `YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\modules\BtMusicManager.java` | 蓝牙音乐核心业务。 |
| `YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\platform\BluetoothA2dpSinkClient.java` | A2DP 音频连接。 |
| `YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\platform\BluetoothAvrcpClient.java` | AVRCP 控制和歌曲信息。 |
| `YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\audio\BtMusicAudioManager.java` | 音频焦点和媒体按键。 |
| `YX_Launcher\src\main\java\com\yaxon\launcher\card\BluetoothMusicCardView.java` | Launcher 蓝牙音乐卡片。 |