欢迎光临电池充电器网站,超强质量保证,多充电安全保护,专业厂家定制

[用什么方法检测5号充电电池剩余电量多少钱]iOS 获取系统剩余电量

作者:以沫      发布时间:2021-04-19      浏览量:0
当我们想解决iOS耗电问题时,首

当我们想解决iOS耗电问题时,首先要能获取到系统电量才能更好地去解决的问题。下面开始介绍。
在 iOS 中,IOKit framework 是专门用于跟硬件或内核服务通信的。所以,我们可以通过 IOKit framework 来获取硬件信息,进而获取到电量消耗信息。

第一步

导入 IOKit.framework,但是目前 IOKit.framework库只存在Mac下,所以要自己新建一个mac项目,然后从那个项目导入,再拷到iOS项目中

第二步

把IOKit.framework里面的IOPowerSources.h和IOPSKeys.h拷贝到你的iOS项目中。

第三步

把 batteryMonitoringEnabled 置为true

[UIDevice currentDevice].batteryMonitoringEnabled = YES;  

第四步

通过如下代码获取 1% 精确度的电量信息

#import "IOPSKeys.h"#import "IOPowerSources.h"-(double) getBatteryLevel{    // 返回电量信息    CFTypeRef blob = IOPSCopyPowerSourcesInfo();    // 返回电量句柄列表数据    CFArrayRef sources = IOPSCopyPowerSourcesList(blob);    CFDictionaryRef pSource = NULL;    const void *psValue;    // 返回数组大小    int numOfSources = CFArrayGetCount(sources);    // 计算大小出错处理    if (numOfSources == 0) {        NSLog(@"Error in CFArrayGetCount");        return -1.0f;    }    // 计算所剩电量    for (int i=0; i<numOfSources; i++) {        // 返回电源可读信息的字典        pSource = IOPSGetPowerSourceDescription(blob, CFArrayGetValueAtIndex(sources, i));        if (!pSource) {            NSLog(@"Error in IOPSGetPowerSourceDescription");            return -1.0f;        }        psValue = (CFStringRef) CFDictionaryGetValue(pSource, CFSTR(kIOPSNameKey));        int curCapacity = 0;        int maxCapacity = 0;        double percentage;        psValue = CFDictionaryGetValue(pSource, CFSTR(kIOPSCurrentCapacityKey));        CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &curCapacity);        psValue = CFDictionaryGetValue(pSource, CFSTR(kIOPSMaxCapacityKey));        CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &maxCapacity);        percentage = ((double) curCapacity / (double) maxCapacity * 100.0f);        NSLog(@"curCapacity : %d / maxCapacity: %d , percentage: %.1f ", curCapacity, maxCapacity, percentage);        return percentage;    }     return -1.0f;  }

至此,获取系统剩余电量完毕,文章主要总结自戴铭老师的博客,同时加入了里面的一些操作细节。具体demo见如下链接 https://github.com/Git-ChenPan/GetPowerSourcesInfo