您如何在默认声卡的“主” channel 上收听音量变化?我想通过dbus或回调或音量已更改的通知得到通知。

我已经尝试过寻找ALSA和PulseAudio API,它们似乎只允许您设置和获取音量,而不能监听音量的变化。

任何编程语言都可以。

最佳答案

使用ALSA API可以做到这一点。

当您拥有控制设备时,请调用snd_ctl_subscribe_events()以启用事件。
然后使用snd_ctl_read()读取事件;要等待它们,请使用阻止模式或poll()
如果事件的类型为SND_CTL_EVENT_ELEM,并且其事件位掩码包含SND_CTL_EVENT_MASK_VALUE,则该元素的值已更改。

有关示例,请参见the implementation of amixer monitor

关于alsa - 注意ALSA/Pulseaudio中的音量变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34936783/

10-11 12:21