1. 协议架构

上面描述的就是整体的协议架构,我们针对蓝牙音乐的协议架构分析,其中涉及到了几个协议:

其中针对业务层的逻辑,涉及到了A2DP和AVRCP协议;
1.1 AVRCP介绍
AVRCP全称:Audio/Video Remote Control Profile,即音频/视频远程控制配置文件。
AVRCP设计用于提供控制TV,Hi-Fi设备等的标准接口,此配置文件用于许可单个远程控制设备(或其他设备)控制所有用于可以接入的A/V设备。AVRCP定义了如何控制流媒体的特征。包括暂停、停止、启动重放、音量控制及其他类型的远程控制操作(其实和DLNA的指令控制类似);
AVRCP是一种在蓝牙协议栈A2DP/AVRCP上实现的控制技术;
1.2 A2DP介绍
A2DP全称:Advenced Audio Distribution Profile,即蓝牙音频传输模型协定;
A2DP规定了使用蓝牙异步传输信道方式,传输高质量音乐文件数据的协议堆栈软件和使用方法,基于该协议就能通过以蓝牙方式传输高品质的音乐。例如使用蓝牙耳机或蓝牙音响设备来收听音乐了;
针对上述的相关的协议,其实和蓝牙命令请求和响应有密切的关联;

2. Command & Event
2.1 Command
我们整理一下蓝牙音乐过程中涉及到的常见的一些Command;
| Protocol | JNI | Command | Desc |
|---|---|---|---|
| A2dpSink | BluetoothA2dpSinkServiceJni | classInitNative | 初始化A2dpSink Native |
| A2dpSink | BluetoothA2dpSinkServiceJni | connectA2dpNative | 用于连接A2dp |
| Sdp | BluetoothSdpJni | sdpCreateOppOpsRecordNative | 创建服务记录列表 |
| Sdp | BluetoothSdpJni | sdpSearchNative | 搜索服务 |
| Avrcp | BluetoothAvrcpControllerJni | getPlayerListNative | 获取播放列表 |
| Avrcp | BluetoothAvrcpControllerJni | sendPassThroughCommandNative | 68:播放 70:暂停 75:下一首 76:上一首 |
2.2 Event
Event代表的就是上层业务层向下发送指令到底层返回的callback响应;
| Protocol | JNI | Event | Desc |
|---|---|---|---|
| A2dpSink | BluetoothA2dpSinkServiceJni | bta2dp_connection_state_callback | 响应A2dp服务连接 |
| Sdp | BluetoothSdpJni | sdp_search_callback | 响应sdp服务搜索结果 |
| A2dpSink | BluetoothA2dpSinkServiceJni | bta2dp_audio_config_callback | A2dp audio配置变化回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_connection_state_callback | Avrcp服务连接状态回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_get_rcfeatures_callback | |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_play_status_changed_callback | 当前播放状态变化信息回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_track_changed_callback | TrackInfo信息变化回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_set_addressed_player_callback | 设置address地址信息结果回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_uids_changed_callback | uid变化回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_get_folder_items_callback | 获取文件夹目录信息回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_playerapplicationsetting_callback | 播放器设置结果回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_playerapplicationsetting_changed_callback | 更换播放器结果回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_available_player_changed_callback | 播放可行性变化回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_addressed_player_update_callback | address信息变化回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_play_position_changed_callback | 播放进度条信息回调 |
| Avrcp | BluetoothAvrcpControllerJni | btavrcp_passthrough_response_callback | 指令响应结果回调 |
| A2dpSink | BluetoothA2dpSinkServiceJni | bta2dp_audio_state_callback | A2dp audio状态变化结果回调 |

7155

被折叠的 条评论
为什么被折叠?



