标题几乎说明了一切。我正在创建一个 mac 应用程序,我需要专门以 mWh(而不是百分比)为单位的电池电量。最好用 C 或 Objective C 来做。
谢谢!
标题几乎说明了一切。我正在创建一个 mac 应用程序,我需要专门以 mWh(而不是百分比)为单位的电池电量。最好用 C 或 Objective C 来做。
谢谢!
所以这里有一些代码可以直接回答我的问题,即以 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;
}
抱歉,但我认为硬件没有办法报告这一点。随着电池在其生命周期中的使用,它会随着时间的推移而发生变化,而您一开始所能知道的只是电池安装时的标称容量。
这可能对您没有帮助,但我知道ioreg
命令行程序可以输出有关计算机电池的各种精彩统计数据,包括设计容量、当前容量和当前充电水平(以 mAh 为单位)。(ioreg -l
所有这些都给你非常详细的输出)如果你能弄清楚程序使用什么 API ,你可以做同样的事情。
或者您可以从您的应用程序中调用该程序并捕获输出。