Эту функцию действительно сложно развить, потому что она зависит от многих факторов.Вы лучше реализуете родные уведомления батареи для каждой конкретной платформы.Некоторые платформы предоставляют достаточно полную информацию о потребляемой мощности и оставшемся сроке службы батареи.Это (вероятно) приведет к лучшим оценкам и сэкономит вам много работы:)
Пример для iPhone;
UIDevice *device = [UIDevice currentDevice];
device.batteryMonitoringEnabled = YES;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@”UIDeviceBatteryLevelDidChangeNotification” object:device];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@”UIDeviceBatteryStateDidChangeNotification” object:device];
Каждое 5% уменьшение заряда батареи запускает UIDeviceBatteryLevelDidChangeNotification.Если вы знаете, как долго устройство работает от 5% заряда батареи, вы можете оценить, как долго оно будет работать от остаточного заряда батареи.По моему опыту, этот метод дает довольно надежные оценки.
В этом случае: когда ваши приложения обнаруживают быстрый разряд батареи, вы проверяете, какие функции энергопотребления включены, и советуете пользователю отключить включенные (WiFi, высокаяяркость и т. д.).
Кроме того, приложения, которые постоянно проверяют множество системных переменных, потребляют довольно много энергии.Это делает ваше приложение «невыгодным» с точки зрения экономии энергии.