Как получить уровень заряда батареи, в частности, в мВтч (не в процентах) для Mac (какао или C) - PullRequest
3 голосов
/ 20 июля 2010

Название в значительной степени объясняет все это.Я создаю приложение для Mac, и мне нужен уровень заряда батареи , в частности в мВтч (не в процентах).Желательно сделать это в C или Objective C.

Спасибо!

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Итак, вот фрагмент кода, который прямо отвечает на мой вопрос, который получает Уровень заряда батареи в мВтч. Это не идеально, но оно делает свою работу.

 + (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;

    }
1 голос
/ 20 июля 2010

Извините, но я не думаю, что у оборудования есть способ сообщить об этом.Со временем он изменится, когда батарея включится в течение своего жизненного цикла, и все, что вы могли знаете с самого начала, это номинальная емкость батареи, когда она была установлена.

0 голосов
/ 20 июля 2010

Это, вероятно, вам не поможет, но я знаю, что программа командной строки ioreg может выводить все виды замечательных статистических данных об аккумуляторе вашего компьютера, включая проектную емкость, текущую емкость и текущий уровень заряда в мАч. (ioreg -l дает вам действительно подробный вывод со всем этим) Если вы можете выяснить, какой API используется программой , вы можете сделать то же самое.

Или вы можете просто вызвать программу из своего приложения и записать вывод.

...