我是一名开发人员,希望使用module-bluez-device将android设备的音频数据传输到linux服务器。并且我已经做到了,我可以使用webrtc本机lib来捕获a2dp_source的音频数据。
``但是令我困惑的是,当蓝牙传输状态从播放状态变为空闲状态时,a2dp_source将会消失,这导致webrtc的音频设备捕获模块更改为使用其他声音设备,例如我的Linux服务器的麦克风。
而且,如果蓝牙状态从空闲更改为正在播放(在android上播放音乐),则会显示新的a2dp_source,但是webrtc的音频捕获模块不会更改为使用新的a2dp_source,这是我的问题。 当我连接到我的android设备并执行pactl列表源时,a2dp_source状态为SUSPENDED,id为96(源#96)。
然后我在android中播放音乐,a2dp_source状态更改为RUNNING。
在我停止在Android中播放音乐之后,a2dp_source状态将保持大约3秒钟,最后消失。
如果我再次在Android设备中播放音乐,则会显示ID为98且状态为RUNING的新a2dp_source。
在bluez传输状态从播放变为空闲之后,我跟踪了调用堆栈。
PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED(正在闲置)
↓
pa_card_profile_set_available(cp,PA_AVAILABLE_UNKNOWN)[module-bluez5-device.c]
↓
profile_available_hook_callback [module-bluetooth-policy.c] ↓
find_best_profile [module-bluetooth-policy.c]
if (card->active_profile.available == PA_AVAILABLE_UNKNOWN && anyotherProfile.available == PA_AVAILABLE_YES) {
//change to anyotherProfile
}
At here,anyotherProfile = off
↓
set_profile_cb和stop_thread [module-bluez5-device.c]
↓
a2dp_source消失
如果我是对的,您认为我应该采取哪种分辨率最好?