Files
2026-11-05 14:35:04 +08:00

2.4 KiB

00_总览_一页看懂

一句话理解

手机音乐 App 负责播放内容
车机蓝牙音乐模块负责:
  1. 接收手机音乐声音
  2. 显示歌名、歌手、封面、进度
  3. 控制手机播放、暂停、上一曲、下一曲
  4. 和收音机、USB 音乐、电话、导航等音源抢焦点
  5. 把蓝牙音乐状态同步给 Launcher 卡片

模块角色

角色 简单解释 关键类
A2DP Sink 声音通道,手机把音乐声音推给车机。 BluetoothA2dpSinkClient
AVRCP Controller 控制通道,车机控制手机音乐,也接收歌曲信息。 BluetoothAvrcpClient
MediaBrowser 连接 Android 蓝牙媒体服务。 MediaBrowserClient
音频焦点 决定蓝牙音乐是否可以出声。 BtMusicAudioManager
蓝牙音乐核心 汇总连接、控制、歌曲信息、焦点。 BtMusicManager
页面 给用户看的蓝牙音乐界面。 BluetoothMusicActivity
Launcher 卡片 桌面小组件显示和控制蓝牙音乐。 BluetoothMusicCardView

总体关系

手机音乐 App
  │
  ├─ 声音流:A2DP
  │     ↓
  │   BluetoothA2dpSinkClient
  │
  └─ 控制/歌曲信息:AVRCP
        ↓
      MediaBrowserClient
        ↓
      BluetoothAvrcpClient
        ↓
      BtMusicManager
        ↓
      BtMusicControlManager
        ↓
      BtMusicViewModel
        ↓
      BluetoothMusicActivity

BtMusicManager
  ├─ 调用 BtMusicAudioManager 管理音频焦点
  └─ 调用 BtInfoPushManager 推送给 Launcher

看代码时的方向

如果你想知道“点击按钮后发生了什么”,从上往下看:

BluetoothMusicActivity
  ↓
BtMusicViewModel
  ↓
BtMusicControlManager
  ↓
BtMusicManager
  ↓
BluetoothAvrcpClient

如果你想知道“歌名歌手从哪里来”,从底层往页面看:

MediaBrowserClient
  ↓
BluetoothAvrcpClient
  ↓
BtMusicManager
  ↓
BtMusicViewModel
  ↓
BluetoothMusicActivity

如果你想知道“Launcher 卡片为什么会刷新”,看:

BluetoothAvrcpClient
  ↓
BtInfoPushManager
  ↓
DataManager.putObject(BT_MUSIC_INFO)
  ↓
Id3Info
  ↓
BluetoothMusicCardView