use*_*633 37 linux hardware audio
当耳机与系统连接或断开连接时,我试图检测信号。做这个的最好方式是什么?
如果有带驱动程序的特殊板,那将是我的首选方式。
the*_*ist 23
在我的 linux (Debian GNU/Linux 3.12.0 x86_64) 中,acpi 系统知道这一点,因此调用acpi_listen
显示:
jack/microphone MICROPHONE plug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE unplug
Run Code Online (Sandbox Code Playgroud)
这似乎取决于内核配置中的选定选项 CONFIG_SND_HDA_INPUT_JACK
如果这是您的情况,您可以填充 /etc/acpi/events/
脚本以触发您想要的任何内容。
检查 acpid 手册页http://linux.die.net/man/8/acpid
小智 16
此信息/proc/asound/card0/codec#0
在硬件中可用并取决于硬件。对于我的计算机,它位于捕获此信息的部分:
耳机连接:
[...]
Node 0x0d [Pin Complex] wcaps 0x400181: Stereo
Control: name="Speaker Phantom Jack", index=0, device=0
Pincap 0x00000014: OUT Detect
Pin Default 0x90170110: [Fixed] Speaker at Int N/A
Conn = Analog, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
[...]
Run Code Online (Sandbox Code Playgroud)
耳机已断开(请参阅Pin-ctls
):
[...]
Node 0x0d [Pin Complex] wcaps 0x400181: Stereo
Control: name="Speaker Phantom Jack", index=0, device=0
Pincap 0x00000014: OUT Detect
Pin Default 0x90170110: [Fixed] Speaker at Int N/A
Conn = Analog, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
[...]
Run Code Online (Sandbox Code Playgroud)
您可以使用 inotify 检查文件是否被修改并 grep 信息。
另请参阅https://askubuntu.com/questions/133809/mute-sound-on-headphone-unplug。
名为hda-verb 的工具可以使用引脚启用/禁用耳机插孔。
例如,
要启用耳机插孔,请使用:
./hda-verb /dev/snd/hwC0D0 0x0f SET_PIN_WIDGET_CONTROL 0x40
Run Code Online (Sandbox Code Playgroud)
要禁用耳机插孔,请使用:
./hda-verb /dev/snd/hwC0D0 0x0f SET_PIN_WIDGET_CONTROL 0
Run Code Online (Sandbox Code Playgroud)
由于您只想检查其状态,也许您可以在 java 程序中使用某种轮询机制,该机制可以使用 hda 检查上述引脚的状态。为此,您的 java 程序应该能够调用 hda-verb。或者,您可以检查 hda-verb 的来源(因为它可用)并查看他们是如何完成的。
归档时间: |
|
查看次数: |
40865 次 |
最近记录: |