# 06_开发入口_风险点_测试清单 ## 开发入口速查 ### 改蓝牙音乐页面 ```text F:\zdCode\tongli\YX_BlueTooth\src\main\res\layout\activity_bluetooth_music.xml F:\zdCode\tongli\YX_BlueTooth\src\main\java\com\yaxon\bluetooth\main\BluetoothMusicActivity.java ``` 常见改动: ```text 改封面 改标题/歌手显示 改进度条 改播放按钮 改未连接页面 增加音效入口 增加跳转蓝牙设置 ``` ### 改播放控制 ```text F:\zdCode\tongli\YX_BlueTooth\src\main\java\com\yaxon\bluetooth\viewmodel\BtMusicViewModel.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\manager\BtMusicControlManager.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\modules\BtMusicManager.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\platform\BluetoothAvrcpClient.java ``` 常见改动: ```text 播放前是否强制申请焦点 暂停后是否释放焦点 切歌时是否清默认封面 页面 onResume 是否自动恢复播放 手机端主动播放时是否允许车机出声 ``` ### 改 A2DP 连接 ```text F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\platform\BluetoothConnectListenerClient.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\platform\BluetoothA2dpSinkClient.java F:\zdCode\tongli\YX_BlueTooth\src\main\java\com\yaxon\bluetooth\viewmodel\BtMusicViewModel.java ``` 常见改动: ```text A2DP 自动连接 A2DP 断开清理 连接中状态判断 未连接页面状态 蓝牙关闭后的数据清理 ``` ### 改歌曲信息 ```text F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\modules\BtMusicManager.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\modules\BtInfoPushManager.java F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\model\MusicInfo.java ``` 常见改动: ```text Unknown 兜底文案 封面为空兜底 不同手机音乐 App 兼容 总时长为 0 的处理 播放进度刷新策略 ``` ### 改 Launcher 卡片 ```text F:\zdCode\tongli\YX_Launcher\src\main\java\com\yaxon\launcher\card\BluetoothMusicCardView.java F:\zdCode\tongli\YX_Launcher\src\main\res\layout\card_bluetoothmusic.xml F:\zdCode\tongli\YX_Launcher\src\main\java\com\yaxon\launcher\data\Id3Info.java ``` 常见改动: ```text 卡片 UI 卡片点击进入蓝牙音乐页 卡片控制按钮 卡片进度条 卡片默认态 ``` ### 改音频焦点 ```text F:\zdCode\tongli\YX_BluetoothSDK\src\main\java\com\yaxon\bluetoothsdk\audio\BtMusicAudioManager.java ``` 常见改动: ```text 蓝牙音乐和收音机抢焦点 蓝牙音乐和 USB 音乐抢焦点 来电暂停/恢复 导航播报降音 媒体按键处理 亿连 A2DP 焦点处理 ``` ## 当前代码风险点 | 风险 | 文件 | 说明 | |---|---|---| | `isA2dpSinkConnected()` 总返回 false | `BtMusicViewModel`、`BtMusicControlManager` | 调了底层但没有 return 结果。 | | 音效按钮未闭环 | `activity_bluetooth_music.xml` | 有 `iv_sound_effects`,但 Activity 没处理点击。 | | 连接蓝牙按钮未闭环 | `BluetoothMusicActivity` | `tv_connect_btn` 点击逻辑被注释。 | | A2DP 静音底层调用被注释 | `BluetoothA2dpSinkClient` | `setFluorideAudioTrackGain()`、`setFluorideStreaming()` 没真正调底层。 | | 监听移除方法参数疑似错误 | `BtMusicManager` | `removeIBtMusicModuleListener()` 参数是 `IBtSettingModuleListener`。 | ## 真机测试清单 ### 连接类 | 用例 | 预期 | |---|---| | 手机首次配对并连接 | HFP/A2DP 正常连接,页面显示播放界面。 | | 只连 HFP 未连 A2DP 后进入蓝牙音乐页 | 页面尝试补连 A2DP。 | | 播放中断开手机蓝牙 | 页面切未连接,Launcher 清空蓝牙音乐信息。 | | 蓝牙开关关闭 | 页面切未连接,音乐信息清空。 | ### 播放控制类 | 用例 | 预期 | |---|---| | 点击播放 | 申请音频焦点,手机音乐开始播放。 | | 点击暂停 | 手机音乐暂停,页面按钮切为播放图标。 | | 点击上一曲 | 手机音乐切上一曲,页面和 Launcher 更新。 | | 点击下一曲 | 手机音乐切下一曲,页面和 Launcher 更新。 | | Launcher 点击播放/暂停 | 蓝牙音乐响应,页面和卡片状态同步。 | ### 歌曲信息类 | 用例 | 预期 | |---|---| | 普通歌曲 | 显示标题、歌手、封面、进度、总时长。 | | 标题为空 | 显示 Unknown 或打开手机音乐 App 状态。 | | 封面为空 | 显示默认封面。 | | 总时长为 0 | 进度条安全显示,不崩溃。 | ### 音频焦点类 | 用例 | 预期 | |---|---| | 蓝牙音乐播放时打开收音机 | 蓝牙音乐暂停或静音,收音机出声。 | | 收音机播放时手机点蓝牙音乐播放 | 如果蓝牙音乐无焦点,应暂停或不出声。 | | 蓝牙音乐播放时来电 | 蓝牙音乐暂停,电话优先。 | | 电话结束 | 根据之前播放状态决定是否恢复蓝牙音乐。 | ## 日志关键词 ```text BtMusicManager BluetoothAvrcpClient BluetoothA2dpSinkClient BtMusicAudioManager BtInfoPushManager BluetoothMusicActivity onPlaybackStateChanged onMetadataChanged requestAudioFocus AUDIOFOCUS_GAIN AUDIOFOCUS_LOSS onA2dpConnect onA2dpDisconnect MUSIC_BT_CONTROL_STATE ``` ## 排查顺序 ```text 1. 先看是否 A2DP connected 2. 再看 MediaBrowserClient 是否连接成功 3. 再看是否收到 onMetadataChanged 4. 再看是否收到 onPlaybackStateChanged 5. 再看点击播放后是否 requestAudioFocus 成功 6. 再看是否调用 BluetoothAvrcpClient.play/pause/next/previous 7. 再看 Launcher 是否写入 MUSIC_BT_CONTROL_STATE 8. 最后看 BtInfoPushManager 是否写入 BT_MUSIC_INFO ```