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