[uidevice currentdevice].batterymonitoringenabled = yes;
double devicelevel = [uidevice currentdevice].batterylevel;
獲取當前剩餘電量, 我們通常採用上述方法。
這也是蘋果官方文件提供的。
它返回的是0.00-1.00之間的浮點值。
另外, -1.00表示模擬器。
貌似這種方法不錯, 也非常easy。
可是細緻觀察它的返回值, 我們能夠發現。它是以0.05遞變的。 折算成100% 也就是以5%來遞變的。
也就是說, 這個辦法是存在缺陷的, 最起碼, 它不精確。
後來找到了乙個方法。相當精確, 誤差保持在1%以內。
我們知道, mac下有個iokit.framework庫。
它能夠計算出我們須要的電量。
假設我們要使用它的話, (ios是不提供的) 能夠先建立乙個mac下的project, 找到iokit.framework。那iokit.framework裡面的iopowersources.h和iopskeys.h複製到你的ios專案中。
另外, 還須要把iokit也匯入到你的project中去。
以下詳細介紹下用法。
匯入須要的iopowersources.h, iopskeys.h 和 iokit
在實現的地方宣告標頭檔案
#import "iopskeys.h"
#import "iopowersources.h"
/**
* calculating the remaining energy
* * @return current batterylevel
*/-(double)getcurrentbatterylevel
//calculating the remaining energy
for (int i = 0 ; i < numofsources ; i++)
psvalue = (cfstringref)cfdictionarygetvalue(psource, cfstr(kiopsnamekey));
int curcapacity = 0;
int maxcapacity = 0;
double percent;
psvalue = cfdictionarygetvalue(psource, cfstr(kiopscurrentcapacitykey));
cfnumbergetvalue((cfnumberref)psvalue, kcfnumbersint32type, &curcapacity);
psvalue = cfdictionarygetvalue(psource, cfstr(kiopsmaxcapacitykey));
cfnumbergetvalue((cfnumberref)psvalue, kcfnumbersint32type, &maxcapacity);
percent = ((double)curcapacity/(double)maxcapacity * 100.0f);
return percent;
}return -1.0f;
}
nslog(@"%.2f", [self getcurrentbatterylevel]);
iOS開發 獲取精確剩餘電量
uidevice currentdevice batterymonitoringenabled yes double devicelevel uidevice currentdevice batterylevel 獲取當前剩餘電量,我們通常採用上述方法。這也是蘋果官方文件提供的。它返回的是0.00 ...
c ,使用WMI物件獲取筆記本電池剩餘電量的百分比
有時候需要監控到筆記本電池的剩餘電量,調查後發現wmi物件可以搞定。在使用wmi物件前,先要新增對system.management的引用,然後就可以呼叫wmi物件。我們使用的wmi物件是 win32 battery 物件參考 managementclass mc new managementcla...
c ,使用WMI物件獲取筆記本電池剩餘電量的百分比
有時候需要監控到筆記本電池的剩餘電量,調查後發現wmi物件可以搞定。在使用wmi物件前,先要新增對system.management的引用,然後就可以呼叫wmi物件。我們使用的wmi物件是 win32 battery 物件參考 managementclass mc new managementcla...