2009-09-16 10 views
9

私がやりたかったのは、バッテリーの残量を記録することでした。私はLinuxの同等の機能がsysctl(hw.acpi.battery.life)であることを知っています。しかし、私がmac os xのsysctlの人に行ったとき、それを見つけるための同等のコードが見つかりませんでした。客観的なcを使ってこれを行う方法を指摘する人もいます。私はsysctlbynameを呼び出すことができますが、これはstructの入力としてこれを持っていません。よろしくお願いします。mac os x macbooksのバッテリー寿命をプログラム的に取得する方法は?

+0

おそらく "objective-c"タグを追加してみてください。残念ながら編集担当者はいません。 –

+0

OSXの[Battery status]の重複している可能性があります(http://stackoverflow.com/questions/272552/battery-status-in-osx) –

答えて

19

IOKitIOPowerSources機能を試してみてください。 IOPSCopyPowerSourcesInfo()を使用してブロブを取得し、IOPSCopyPowerSourcesList()を使用して、CFArrayを抽出して、電源をリストします。最後にIOPSGetPowerSourceDescription()を使用して辞書を取得できます。

コマンドラインを使用することができる場合は、あなたがそうのようにpmsetコマンドに

を使用することができますが:

$ pmset -g 
+1

+1 IOPowerSources –

+4

より詳しくは、 'pmset -g batt'はバッテリーのパーセンテージとステータス。 – DebugXYZ

+0

@Dominicあなたの投稿のリンクのほとんどが死んでいます。 –

3

あなたにも、コマンドラインでioreg使用することができます。たとえば:

ioreg -l -w0 |grep CurrentCapacity 

はあなたの最大容量と比較することができる現在のバッテリーの状態を与える:バッテリーの状態に関するいくつかの詳細情報を取得するために

ioreg -l -w0 |grep MaxCapacity 
0

もう一つの方法は、実行するためにNSTaskを使用することですSPPowerDataTypeを引数とするsystem_profilerコマンド。

:あなたは具体的には、あなたが適切な行を解析し、またはこのコマンドでのplistを生成することができますいずれかのものを取得するには

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 

バッテリー情報:私のMacでは、それは私に次のような結果を与えます

$ system_profiler SPPowerDataType -xml> BatteryInfo.plist

これにより、特定のキーに基づいて値を取得しやすくなります。

関連する問題