3

标题几乎说明了一切。我正在创建一个 mac 应用程序,我需要专门以 mWh(而不是百分比)为单位的电池电量。最好用 C 或 Objective C 来做。

谢谢!

4

3 回答 3

1

所以这里有一些代码可以直接回答我的问题,即以 mWh 为单位获取电池电量。它并不完美,但它可以完成工作。

 + (NSString* ) chargeInMWH 
  { 



CFMutableDictionaryRef matching , properties = NULL;
io_registry_entry_t entry = 0;
matching = IOServiceMatching( "IOPMPowerSource" );
entry = IOServiceGetMatchingService( kIOMasterPortDefault , matching );
IORegistryEntryCreateCFProperties( entry , &properties , NULL , 0 );



NSNumber * voltage = [[NSNumber alloc] initWithFloat:1.0];
NSNumber * currentCapacity= [[NSNumber alloc] initWithFloat:1.0];

voltage =  [properties objectForKey:@"Voltage"];    
currentCapacity =  [properties objectForKey:@"CurrentCapacity"];


int floatValue = [voltage intValue];
int floatValue2 = [currentCapacity intValue];
int answer = floatValue * floatValue2;

NSString *theCompleteAnswer = [[NSString alloc] initWithFormat:@"%i",answer];


CFRelease( properties );
IOObjectRelease( entry );


return theCompleteAnswer;

    }
于 2010-07-26T16:20:22.913 回答
1

抱歉,但我认为硬件没有办法报告这一点。随着电池在其生命周期中的使用,它会随着时间的推移而发生变化,而您一开始所能知道的只是电池安装时的标称容量。

于 2010-07-20T15:04:10.477 回答
0

这可能对您没有帮助,但我知道ioreg命令行程序可以输出有关计算机电池的各种精彩统计数据,包括设计容量、当前容量和当前充电水平(以 mAh 为单位)。(ioreg -l所有这些都给你非常详细的输出)如果你能弄清楚程序使用什么 API 你可以做同样的事情。

或者您可以从您的应用程序中调用该程序并捕获输出。

于 2010-07-20T16:08:57.500 回答