1
我正在尝试编写一个程序,检测我是否已插入或拔出耳机并相应地执行某些操作。我使用的是Ubuntu 14.04,通过一些搜索,我发现耳机/耳机连接状态被写入到此路径的编解码器文件 -/proc/asound/card0。包含状态信息的特定文件是编解码器#0.txt。看门狗 - on_modified事件不会触发编解码器文件更改
我已经使用Watchdog库编写了一个Python程序,并尝试将此编解码器#0文件输出与unplugged.txt的初始状态进行比较。根据文件是否匹配,我想要启动音乐播放器。
现在的代码如下;我无法弄清楚为什么on_modified事件不会在每次连接/拔下耳机插孔时都会触发。我看到上面提到的路径中的所有文件的修改日期都改变了,但是我的程序没有打印出一条消息。
代码:
import time
import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import filecmp
unpluggedStateFile = 'unplugged.txt'
class HeadsetPluginHandler(FileSystemEventHandler):
def on_modified(self, event):
print 'File changed.'
# os.system('cat /proc/asound/card0/codec#0 > pluggedIn.txt')
# print filecmp.cmp(unpluggedStateFile, 'pluggedIn.txt')
if __name__== "__main__":
event_handler = HeadsetPluginHandler()
observer = Observer()
observer.schedule(event_handler, path='/proc/asound/card0', recursive=False)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
print 'stopped'
observer.join()