2009-09-16 7 views
9

Co chciałem zrobić, to zaloguj się na procent baterii. Wiem, że odpowiednikiem w Linuksie jest sysctl (hw.acpi.battery.life). Jednak kiedy przeszedłem przez człowieka z sysctl w mac os x nie znalazłem odpowiednika kodu, aby go znaleźć. Czy ktoś może wskazać, jak to zrobić, używając obiektywu c? Mogę wywołać sysctlbyname, ale nie ma tego jako dane wejściowe w jego strukturze. Prosimy o pomocJak programowo uzyskać żywotność baterii mac os x macbook?

+0

Być może spróbuj dodać znacznik "cel-c". Nie mam jeszcze przedstawiciela do edycji. –

+0

Możliwy duplikat [stanu baterii w OSX?] (Http://stackoverflow.com/questions/272552/battery-status-in-osx) –

Odpowiedz

19

Spróbuj użyć funkcji IOKit i IOPowerSources. Możesz użyć IOPSCopyPowerSourcesInfo(), aby otrzymać obiekt typu blob, a następnie IOPSCopyPowerSourcesList(), aby wyodrębnić z niego CFArray, wymieniając źródła zasilania. Na koniec możesz użyć IOPSGetPowerSourceDescription(), aby pobrać słownik.

Jeśli można użyć wiersza polecenia, można użyć polecenia pmset

tak:

$ pmset -g 
+1

+1 na IOPowerSources –

+4

dokładniej 'pmset -g batt' pokazuje procent baterii i status. – DebugXYZ

+0

@Dominic większość linków w twoim poście jest martwa. –

3

można użyć ioreg w linii poleceń, jak również. Na przykład:

ioreg -l -w0 |grep CurrentCapacity 

daje status prąd akumulatora, który można porównać do Maksymalna pojemność:

ioreg -l -w0 |grep MaxCapacity 
0

Innym sposobem uzyskania trochę więcej informacji na temat stanu baterii jest użycie NSTask wykonanie europejskiego Polecenie system_profiler z SPPowerDataType jako argumentem. Na moim Mac, to daje mi następujące wyniki:

informacji o baterii:

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 

Aby odzyskać to, co konkretnie można też analizować odpowiednie linie, lub wygenerować plist z tym poleceniem:

$ system_profiler SPPowerDataType -xml> BatteryInfo.plist

Ułatwiłoby to pobieranie wartości na podstawie określonych kluczy.