【Bluedroid】btif_av_handle_event 流程源码解析
本文深入解析Android蓝牙A2DP模块中Opened状态的事件处理机制。通过分析
btif_av_handle_event的事件分发流程和StateOpened::ProcessEvent的具体实现,揭示蓝牙音频连接在已建立连接但未开始传输音频时的行为逻辑,包括启动流、断开连接、重新配置等关键操作的状态转换过程。
一、概述
1.1 对等端管理
通过BtifAvSource(源)和BtifAvSink(宿)管理器实现BtifAvPeer对象的查找与创建:
-
查找:已知地址时调用
FindPeer;已知 BTA 句柄时调用FindPeerByHandle遍历peers_容器匹配。 -
创建:遍历
kPeerIdMin~kPeerIdMax分配唯一peer_id(共存模式需检查源 / 宿 ID 冲突),绑定 BTA 句柄(未知时查表),创建对象并初始化后存入peers_。
1.2 状态机事件处理
对等端通过BtifAvStateMachine管理生命周期,核心逻辑为事件驱动的状态转换:
