#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (nonatomic, assign) float prevBatteryLev;
@property (nonatomic, strong) NSDate * startDate;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize prevBatteryLev;
@synthesize startDate;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[UIDevice currentDevice].batteryMonitoringEnabled = YES;
self.prevBatteryLev = [UIDevice currentDevice].batteryLevel;
self.startDate = [NSDate date];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(batteryCharged:)
name:UIDeviceBatteryLevelDidChangeNotification
object:nil
];
}
- (void)batteryCharged:(NSNotification *)note
{
NSLog(@"%@", note);
float currBatteryLev = [UIDevice currentDevice].batteryLevel;
// calculate speed of chargement
float avgChgSpeed = (self.prevBatteryLev - currBatteryLev) / [self.startDate timeIntervalSinceNow];
// get how much the battery needs to be charged yet
float remBatteryLev = 1.0 - currBatteryLev;
// divide the two to obtain the remaining charge time
NSTimeInterval remSeconds = remBatteryLev / avgChgSpeed;
NSLog(@"%f", remSeconds);
// convert/format `remSeconds' as appropriate
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceBatteryLevelDidChangeNotification object:nil];
}
@end