Как получить уровень заряда батареи конкретно в мВтч (не в процентах) для Mac (какао или C)
Название в значительной степени объясняет все это. Я создаю приложение для Mac, и мне нужен уровень заряда батареи конкретно в мВтч (не в процентах). Желательно сделать это в C или Objective C.
Спасибо!
3 ответа
Итак, вот немного кода, который прямо отвечает на мой вопрос о получении уровня заряда батареи в мВтч. Это не идеально, но это делает работу.
+ (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
Программа командной строки может выдавать все виды замечательных статистических данных об аккумуляторе вашего компьютера, включая расчетную емкость, текущую емкость и текущий уровень заряда в мАч. (ioreg -l
дает вам действительно подробный вывод со всем этим) Если вы можете выяснить, какой API использует эта программа, вы можете сделать то же самое.
Или вы можете просто вызвать программу из вашего приложения и записать результат.