您如何在默认声卡的“主” 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/