耳机断开连接时会执行什么代码?

耳机断开连接时会执行什么代码?

我想在耳机断开连接时执行一个脚本,但我讨厌这个想法持续轮询当状态发生改变时,已经执行了一些代码。

答案1

在大多数(如果不是全部)系统中,ACPI 可以处理此事件。要测试:

  1. 跑步acpi_listen
  2. 拔下并重新插入耳机,示例输出:(麦克风/耳朵在我的笔记本电脑上共用同一个插孔)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. 普京your-script.sh/etc/acpi/

  4. 为您的脚本添加事件触发器文件/etc/acpi/events/

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    

    检查那里的其他文件以供学习。

  5. 您可能需要重新启动acpid服务才能重新加载已更改的规则/etc/acpi/events/

    sudo service acpid restart
    

参考: man acpid

答案2

脚本的当前版本现在包含一个sleep 0.25命令。

sleep基于计时器,因此不使用任何睡觉时处理周期……

它确实使用了极少量的 CPU 来设置计时器,但是sleep 1(睡眠 1 秒)、sleep 60(睡眠 1 分钟)和sleep 86400(睡眠 1 天)都使用相同数量的 CPU 周期。

使用 ACPI然而完美的解决方案,因为 ACPI 是事件驱动的,而不是轮询驱动的。

相关内容