1

我正在尝试编写一个程序来检测我是否插入或拔出耳机并相应地执行某些操作。我正在使用 Ubuntu 14.04,通过一些搜索,我发现耳机/耳机连接状态已写入此路径的编解码器文件 - /proc/asound/card0。包含状态信息的特定文件是 codec#0.txt。

我使用 Watchdog 库编写了一个 Python 程序,并尝试将此 codec#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()
4

1 回答 1

-1

我相信这不起作用,因为看门狗无法监视系统文件的更改。我不确定这是否 100% 正确,但这就是我在 IRC、Reddit 等上四处询问的结果。

于 2016-04-13T11:09:36.877 回答