Как получить время автономной работы 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
Это облегчит получение значений на основе определенных ключей.