如何在脚本中检测我的声卡是否已通电?
动机:我有一台 Linux 迷你电脑 ( Odroid U3
),用作音乐播放器。我只想在播放声音时才打开连接的放大器的电源。为此,我需要以某种方式检测音频是否正在打开和关闭。
这个帖子表明可以ALSA
从 中的某些文件读取状态/proc
,这些文件实际上不是文件,因此inotify
不起作用,并且轮询不是一个选项,因为它浪费电量,并且我需要立即检测音频电源打开。
是否有一些系统事件或 alsa 事件我可以在脚本中等待,这会告诉我正在打开/关闭的音频硬件的变化?然后我会编写一个永无止境的循环脚本,等待事件发生,为放大器供电,然后重复等待。
答案1
如果内核启用了审核支持(这对于嵌入式发行版来说不太可能),那么当有人访问声音设备文件时您可以收到通知。
否则,这必须在用户空间中完成。 ALSA 库支持虚拟可以调用钩子函数的设备在共享库中。这是相当无证的;唯一的例子是_snd_pcm_hook_ctl_elems_install()
在使用 PCM 设备时更改和恢复某些混音器控制的功能。