如何在iSIght网络摄像头开启时显示通知?


4

当我的iSight开启时,是否可以获得桌面通知?如果这可以通过Growl,这将是最佳的,但我已经尝试过HardwareGrowler并且它没有给我通知。

我知道绿灯 总是 当iSight打开时打开,但是当iSight打开一秒钟时,我可能没有看到屏幕而我错过了绿灯,因此一直停留在屏幕上的通知直到我关闭它会是最佳的。

我在MacBook Pro 5,3上,我有Mountain Lion 10.8.3。


我猜每次都会访问iSight驱动程序。假设您的文件系统已启用atime(默认情况下),您可以检查上次访问该驱动程序的时间,如下所示: ls -lu /System/Library/Quicktime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/QuickTimeUSBVDCDigitizer | awk '{print $6,$7,$8}'。编写一个脚本,将其与growlnotify相结合,并使其在后台运行。 TA-DAA!
Elliott

1
我复制粘贴在终端的代码行,得到: No such file or directory
Saaru Lindestøkke

@BartArondson由于它是如此长的命令,因此复制时格式存在一些问题。因此,要么手动导航到此目录并运行 ls -lu 或复制整个命令 这里 。我将尝试使用Growl解决方案,但不要指望今天到达。也许别人比我快...
gentmatt

谢谢,dropbox link命令有效。但是,运行该命令会显示我没有使用iSight的日期和时间。同时打开Photo Booth(以及iSight),再次将其关闭并运行命令不会更改显示的日期。所以看起来命令没有按预期工作。一个工作的解决方案会很棒,但不着急,我在一月份问了这个问题,我可以等一下。
Saaru Lindestøkke

我编写了一个AppleScript应用程序,它将通知是否访问了文件。你可以下载它 这里 。检测访问的时间间隔为10秒。但是,真正的问题是知道在使用相机时唯一访问的文件。只要我们不知道,这个应用程序就没用了。目前通知有关访问 /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
gentmatt

Answers:


2

在Growl的帮助下 文件 关于AppleScript支持和一些讨论 巴特阿隆顿 艾略特B. 在里面 评论 关于这个问题,我想出了以下AppleScript。

我已将此脚本保存为应用程序代理,您可以将其添加到登录项目中 系统偏好设置→用户&组→登录项目

基本上,此应用程序通过检测是否正在访问与使用相机相关的唯一可执行文件来工作。每当访问可执行文件时,应用程序都会将其通知为Growl:

enter image description here

下载

重要的是要知道此脚本监视对可执行文件的访问...

/System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC

完整的脚本

-- check if growl is running in order to avoid the "Choose Application" dialog
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

-- store time of last iSight access
global lastopened
set lastopened to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"

-- make the application ready for use with growl
if isRunning then
    tell application id "com.Growl.GrowlHelperApp"

        -- make a list of all the notification types that this script will ever send
        set the allNotificationsList to ¬
            {"iSight access monitor"}

        -- register the script with growl
        register as application ¬
            "iSight access monitor" all notifications allNotificationsList ¬
            default notifications allNotificationsList ¬
            icon of application "FaceTime"

        -- send the first notification right after the application is started
        notify with name ¬
            "iSight access monitor" title ¬
            "iSight access monitor" description ¬
            "last iSight access: 
" & lastopened application name "iSight access monitor"
    end tell
end if

-- monitoring routine: checks every 10s if the VDC executable has been accessed
on idle
    tell application id "com.Growl.GrowlHelperApp"
        set newopen to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"
        if (newopen is not equal to lastopened) then
            notify with name ¬
                "iSight access monitor" title ¬
                "iSight access monitor" description ¬
                "new iSight access: 
" & newopen application name "iSight access monitor"
            set lastopened to newopen
        end if
    end tell
    return 10 -- interval in seconds
end idle

啊,我太高兴了。 Citrix Viewer是一个远程桌面客户端,也可以访问 VDC 文件打开。它有意义,因为它可能需要访问相机,但这使得这个解决方案不太完美。
Saaru Lindestøkke

@BartArondson真可惜。我希望一些知识渊博的开发人员偶然发现这个问题,将来能够进一步改进答案。
gentmatt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.