iOS開發 獲取精確剩餘電量

2021-09-10 15:27:53 字數 3509 閱讀 8072

[uidevice currentdevice].batterymonitoringenabled = yes;double devicelevel = [uidevice currentdevice].batterylevel;

獲取當前剩餘電量, 我們通常採用上述方法。這也是蘋果官方文件提供的。

它返回的是0.00-1.00之間的浮點值。  另外, -1.00表示模擬器。

貌似這個方法不錯, 也很簡單。

但是仔細觀察它的返回值, 我們可以發現。它是以0.05遞變的。 折算成100% 也就是以5%來遞變的。

也就是說, 這個辦法是存在缺陷的, 最起碼, 它不精確。

後來找到了乙個方法。相當精確, 誤差保持在1%以內。

我們知道, mac下有個iokit.framework庫。 它可以計算出我們需要的電量。

如果我們要使用它的話, (ios是不提供的) 可以先建立乙個mac下的工程, 找到iokit.framework,那iokit.framework裡面的iopowersources.hiopskeys.h拷貝到你的ios專案中。另外, 還需要把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]);

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

[uidevice currentdevice].batterymonitoringenabled = yes;double devicelevel = [uidevice currentdevice].batterylevel;

獲取當前剩餘電量, 我們通常採用上述方法。這也是蘋果官方文件提供的。

它返回的是0.00-1.00之間的浮點值。  另外, -1.00表示模擬器。

貌似這個方法不錯, 也很簡單。

但是仔細觀察它的返回值, 我們可以發現。它是以0.05遞變的。 折算成100% 也就是以5%來遞變的。

也就是說, 這個辦法是存在缺陷的, 最起碼, 它不精確。

後來找到了乙個方法。相當精確, 誤差保持在1%以內。

我們知道, mac下有個iokit.framework庫。 它可以計算出我們需要的電量。

如果我們要使用它的話, (ios是不提供的) 可以先建立乙個mac下的工程, 找到iokit.framework,那iokit.framework裡面的iopowersources.hiopskeys.h拷貝到你的ios專案中。另外, 還需要把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...