版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.08.06 |
前言
很多時候我們需要監(jiān)聽和獲取電池的電量耘柱,ios提供了很多查看的方式腔长,下面我們就一起來看一下葡缰。感興趣的還可以看我的上一篇淆衷。
1. 獲取設(shè)備的電池狀態(tài)(一)—— UIDevice API獲取
功能要求
獲取設(shè)備的電池狀態(tài)和電量缸榄,這里采用的是運行時的方法。
功能實現(xiàn)
下面看一下代碼祝拯。
#import "JJBatteryRuntimeVC.h"
#import <objc/runtime.h>
@interface JJBatteryRuntimeVC ()
@end
@implementation JJBatteryRuntimeVC
#pragma mark - Override Base Function
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor lightGrayColor];
[self getCurrentBattery];
}
#pragma mark - Object Private Function
- (void)getCurrentBattery
{
UIApplication *application = [UIApplication sharedApplication];
if (application.applicationState == UIApplicationStateActive ||
application.applicationState == UIApplicationStateInactive) {
Ivar ivar = class_getInstanceVariable([application class], "_statusBar");
id status = object_getIvar(application, ivar);
for (id aview in [status subviews]) {
int batteryLevel = 0;
for (id bview in [aview subviews]) {
if ([NSStringFromClass([bview class]) caseInsensitiveCompare:@"UIStatusBarBatteryItemView"] == NSOrderedSame
&& [[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) {
Ivar ivar = class_getInstanceVariable([bview class], "_capacity");
if (ivar) {
batteryLevel = ((int(*)(id, Ivar))object_getIvar)(bview, ivar);
NSLog(@"batteryLevel = %d", batteryLevel);
}
}
}
}
}
}
@end
下面看一下結(jié)果輸出甚带。
2017-08-07 00:00:08.011210+0800 JJOC[8011:3194170] batteryLevel = 75
功能效果
下面我們看一下手機(jī)電池狀態(tài)效果圖。
可見鹿驼,這個方法獲取的電池電量不是很準(zhǔn)確欲低,得到的記過是75%
辕宏,顯示的結(jié)果是73%
畜晰。
后記
未完,待續(xù)~~~