我正在尝试编写一个程序来检测我是否已插入或拔出耳机,并相应地执行某些操作。我使用的是Ubuntu14.04,经过一番搜索,我发现耳机/耳机连接状态被写到了一个编解码器文件中,路径是-/proc/asound/card0。包含状态信息的特定文件是codec#0.txt。在
我用Watchdog库编写了一个Python程序,并尝试将这个codec#0文件输出与初始状态进行比较不插电.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()
我相信这是行不通的,因为watchdog无法监视系统文件的更改。我不确定这是否100%正确,但这是我在IRC、Reddit等网站上询问的结果
相关问题 更多 >
编程相关推荐