通过前面的学习我们了解了蓝牙开发中的各个协议,同时也知道蓝牙音乐的开发需要使用的是蓝牙的 a2dp 和 avrcp,而对蓝牙音乐的控制使用的是 avrcp,这里我们就梳理一下蓝牙音乐播放的调用流程。
一、调用流程
在前面的 Avrcp 协议中,我们了解 App 可以通过 MediaSession 框架下发对应的指令,对于 FW 层会在 AvrcpControllerStateMachine 的 MediaSessionCompat.Callback 中处理指令。
1、AvrcpControllerStateMachine
源码位置:/packages/apps/Bluetooth/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
MediaSessionCompat.Callback mSessionCallbacks = new MediaSessionCompat.Callback() {@Overridepublic void onPlay() {logD("onPlay");onPrepare();sendMessage(MSG_AVRCP_PASSTHRU, AvrcpControllerService.PASS_THRU_CMD_ID_PLAY);}@Overridepublic void onPause() {logD("onPause");sendMessage(MSG_AVRCP_PASSTHRU, AvrcpControllerService.PASS_THRU_CMD_ID_PAUSE);}……@Overridepublic void on