linux - 更改接收器或源列表时如何从 pulseaudio 获取事件?

标签 linux pulseaudio

他。

该程序应不断检查来自蓝牙麦克风的传入声音。 蓝牙设备可以随时连接/断开连接。

如何从 Pulseaudio 获取源列表发生变化的事件?

我试着用 pa_context_set_event_callback (pa_ctx, pa_context_event_cb, &mydata);

但是当蓝牙耳机连接/断开连接时,没有人调用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)。

关于linux - 更改接收器或源列表时如何从 pulseaudio 获取事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940356/

相关文章:

linux - PulseAudio:获取源(麦克风)的当前音量

bash - Ubuntu 14.04 - 如何使用脚本在关机时播放 ogg 文件?

Linux - 使应用程序在不同显示器上的终端启动中启动

linux - Grep:使用排除特定文件夹

linux - Perl CPAN 安装 - 依赖性问题

linux - 无法让修改集在 Linux 上的 CruiseControl 中工作

java - Runtime.getruntime().exec() 在 Linux 上不起作用

audio - 有谁知道如何让 JACK 效果在 Manjaro 中工作?

raspberry-pi - 如何通过 PulseAudio RTP 单播将音频流式传输到 Raspberry Pi?

linux - 无法在 AWS linux 上启动 android 模拟器