And*_*w M 11 macos cocoa objective-c
我正在构建一个需要每分钟轮询服务器的Mac OSX应用程序,如果用户愿意,甚至更少.不幸的是,该服务不支持推...
无论如何,我想为用户提供两个选项:
如何在Objective C中获得充电器的状态?只有在插入笔记本电脑的情况下,我才真正关心实际的百分比.显然,这对桌面来说无关紧要,所以希望有一个适用于笔记本电脑和台式机的解决方案.
Ole*_*ann 16
看看IOPowerSources API.
首先打电话IOPSCopyPowerSourcesInfo()
,然后IOPSCopyPowerSourcesList()
获取所有可用电源的列表.IOPSGetPowerSourceDescription()
将返回包含特定电源信息的字典.根据文档,密钥kIOPSPowerSourceStateKey
描述了"当前的电源.kIOPSBatteryPowerValue
指示电源正在吸取内部电源; kIOPSACPowerValue
表示电源连接到外部电源."
您还可以在电源更改时设置通知IOPSNotificationCreateRunLoopSource()
.
(注意:我没有测试任何这些,只是查看了文档.)
虽然这个问题确实已经有了一个可以接受我的解决方案的答案,但点击很多很多破损的链接是很痛苦的.
这是我的解决方案:
IOKit.framework
#import <IOKit/ps/IOPowerSources.h>
码:
CFTimeInterval timeRemaining = IOPSGetTimeRemainingEstimate();
if (timeRemaining == kIOPSTimeRemainingUnlimited) {
// connected to outlet
} else if (timeRemaining == kIOPSTimeRemainingUnknown){
// time remaining unknown (recently unplugged)
} else if ((timeRemaining / 60) < 30){
// less than 30 minutes remaining
}
Run Code Online (Sandbox Code Playgroud)