2016-02-27 26 views
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() 

回答

0

我相信这不起作用,因为看门狗无法监控系统文件的更改。我不确定这是100%正确的,但这是我在IRC,Reddit等网站上获得的信息。