tob*_*s91 6 macos cocoa objective-c
所以,我正在建立一个将在公共场所展出的节目,我有一个任务是为它做一个不活跃的状态.只需在屏幕上的文件夹中显示一些随机视频,如屏幕保护程序,但在应用程序中.
那么检查用户是否处于非活动状态的最佳和正确方法是什么?
我正在考虑的是某种全局计时器,它会在每个用户输入上重置,如果达到,则让它说1分钟进入非活动模式.有没有更好的方法?
您可以使用 CGEventSourceSecondsSinceLastEventType
返回自 Quartz 事件源的最后一个事件以来经过的时间。
/*
To get the elapsed time since the previous input event—keyboard, mouse, or tablet—specify kCGAnyInputEventType.
*/
- (CFTimeInterval)systemIdleTime
{
CFTimeInterval timeSinceLastEvent = CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateHIDSystemState, kCGAnyInputEventType);
return timeSinceLastEvent;
}
Run Code Online (Sandbox Code Playgroud)
这听起来可能是一个愚蠢的问题;但为什么不直接设置一个屏幕保护程序呢?
如果您需要在用户走开时进行任何重置或清理,您可以侦听名为 @"com.apple.screensaver.didstart" 的 NSNotification。
编辑:您还可以设置屏幕保护程序;等待它启动,然后在它启动时做你自己的事情,当你显示自己的视频时停止屏幕保护程序;但以正确的方式设置屏幕保护程序可能是个好主意。
| 归档时间: |
|
| 查看次数: |
2200 次 |
| 最近记录: |