【问题标题】:How to get the battery life of mac os x macbooks programatically?如何以编程方式获取 mac os x macbook 的电池寿命?
【发布时间】:2009-09-16 12:55:26
【问题描述】:

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

【问题讨论】:

  • 也许尝试添加一个“objective-c”标签。不幸的是,我还没有要编辑的代表。
  • Battery status in OSX?的可能重复

标签: c objective-c macos acpi


【解决方案1】:

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

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

像这样:

$ pmset -g

【讨论】:

  • 更具体地说,pmset -g batt 显示电池百分比和状态。
  • @Dominic 您帖子中的大部分链接都已失效。
【解决方案2】:

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

ioreg -l -w0 |grep CurrentCapacity 

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

ioreg -l -w0 |grep MaxCapacity

【讨论】:

    【解决方案3】:

    获取更多电池状态信息的另一种方法是使用 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

    这将更容易根据特定键检索值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多