9

我想做的是记录电池百分比。我知道 linux 中的等价物是 sysctl(hw.acpi.battery.life)。但是,当我在 mac os x 中浏览 sysctl 的人时,我没有找到等效的代码来找到它。有人可以指出如何使用目标 c 来做到这一点。我可以调用 sysctlbyname 但它的结构中没有这个作为输入。请帮助我

4

3 回答 3

19

尝试使用IOKitIOPowerSources函数。您可以使用IOPSCopyPowerSourcesInfo()获取 blob,然后使用IOPSCopyPowerSourcesList()从中提取 CFArray,列出电源。最后,您可以使用IOPSGetPowerSourceDescription()来获取字典。

如果可以使用命令行,可以使用pmset命令

像这样:

$ pmset -g
于 2009-09-16T13:09:44.990 回答
3

您也可以在命令行上使用 ioreg。例如:

ioreg -l -w0 |grep CurrentCapacity 

为您提供当前的电池状态,可以与最大容量进行比较:

ioreg -l -w0 |grep MaxCapacity
于 2011-12-16T19:01:38.850 回答
1

获取有关电池状态的更多信息的另一种方法是使用 NSTask 以 SPPowerDataType 作为参数执行 system_profiler 命令。在我的 Mac 上,它给了我以下结果:

电池信息:

  Model Information:
      Serial Number: W01396THJD3LA
      Manufacturer: SMP
      Device Name: bq20z451
      Pack Lot Code: 0
      PCB Lot Code: 0
      Firmware Version: 201
      Hardware Revision: 000a
      Cell Revision: 165
  Charge Information:
      Charge Remaining (mAh): 5013
      Fully Charged: Yes
      Charging: No
      Full Charge Capacity (mAh): 5086
  Health Information:
      Cycle Count: 72
      Condition: Normal
  Battery Installed: Yes
  Amperage (mA): -300
  Voltage (mV): 12303

要检索您具体的内容,您可以解析相应的行,或使用以下命令生成 plist:

$ system_profiler SPPowerDataType -xml > BatteryInfo.plist

这将使基于特定键的值更容易检索。

于 2012-12-11T19:25:45.600 回答