[英]Pulseaudio setting up sinks and sources for A2DP and HFP connections
[英]How to get event from pulseaudio when lists of sinks or sources are changed?
他。
该程序应不断检查来自蓝牙麦克风的传入声音。 可以随时连接/断开蓝牙设备。
如何从Pulseaudio获取源列表更改的事件?
我尝试使用pa_context_set_event_callback (pa_ctx, pa_context_event_cb, &mydata);
但是当 BT 耳机连接/断开连接时,没有人调用pa_context_event_cb
。
pulseaudio 的好做法是什么?
好的。 弄清楚了。
1) 订阅上下文状态变化: pa_context_set_state_callback(pa_ctx, pa_state_cb, &mydata);
2) 在 pa_state_cb 中:
void pa_state_cb(pa_context *c, void *userdata) {
pa_context_state_t state;
state = pa_context_get_state(c);
switch (state) {
case PA_CONTEXT_READY: {
//set callback
pa_context_set_subscribe_callback(c, pa_context_subscribe_cb, &mydata);
//set events mask and enable event callback.
o = pa_context_subscribe(c, PA_SUBSCRIPTION_MASK_SINK|PA_SUBSCRIPTION_MASK_SOURCE,
NULL, NULL);
if (o)
{
pa_operation_unref(o);
}
}
break;
case PA_CONTEXT_UNCONNECTED:
case PA_CONTEXT_CONNECTING:
case PA_CONTEXT_AUTHORIZING:
case PA_CONTEXT_SETTING_NAME:
case PA_CONTEXT_FAILED:
case PA_CONTEXT_TERMINATED:
default:
break;
}
3) 然后在回调pa_context_subscribe_cb
处理掩码事件( pa_subscription_event_type_t
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.