Как получить время автономной работы Mac OS X MacBooks программно?

То, что я хотел сделать, это взять журнал на процент батареи. Я знаю, что в Linux это аналог sysctl(hw.acpi.battery.life). Однако, когда я прошел через sysctl в Mac OS X, я не нашел эквивалентный код, чтобы найти его. Кто-нибудь может указать, как это сделать, используя цель c. Я могу вызвать sysctlbyname, но это не имеет в качестве входных данных в его структуре. Пожалуйста, помогите мне, пожалуйста

3 ответа

Попробуйте использовать IOKit и функции IOPowerSources. Вы можете использовать IOPSCopyPowerSourcesInfo(), чтобы получить BLOB-объект, и IOPSCopyPowerSourcesList(), чтобы затем извлечь из него CFArray, перечисляя источники питания. Наконец, вы можете использовать IOPSGetPowerSourceDescription(), чтобы получить словарь.

Если вы можете использовать командную строку, вы можете использовать команду pmset

Вот так:

$ pmset -g

Вы также можете использовать ioreg в командной строке. Например:

ioreg -l -w0 |grep CurrentCapacity 

показывает текущее состояние батареи, которое можно сравнить с максимальной емкостью:

ioreg -l -w0 |grep MaxCapacity

Другой способ получить дополнительную информацию о состоянии батареи - использовать NSTask для выполнения команды system_profiler с SPPowerDataType в качестве аргумента. На моем 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

Это облегчит получение значений на основе определенных ключей.

Другие вопросы по тегам