您的位置:首页 > 移动开发 > IOS开发

IOS程序中代码获取当前设备电量

2014-11-21 16:24 295 查看
IOS程序中代码获取当前设备电量
方法一:
[UIDevice currentDevice].batteryMonitoringEnabled = YES;
double deviceLevel = [UIDevice currentDevice].batteryLevel;

方法二:
也可以自己写一个方法:

// 获取电量
- (double) batteryLevel
{

    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;

        
       
float curCapacity =
0;
       
float maxCapacity =
0;
       
double percent;

        
        psValue =
CFDictionaryGetValue(pSource,
CFSTR(kIOPSCurrentCapacityKey));
       
CFNumberGetValue((CFNumberRef)psValue,
kCFNumberFloat32Type, &curCapacity);

        
        psValue =
CFDictionaryGetValue(pSource,
CFSTR(kIOPSMaxCapacityKey));
       
CFNumberGetValue((CFNumberRef)psValue,
kCFNumberFloat32Type, &maxCapacity);

       // NSLog(@"curCapacity:%f-maxCapacity:%f",curCapacity,maxCapacity);
        percent = ((double)(curCapacity)/(double)maxCapacity *
100.0f);
        [_circleChart
setProgress:percent/100
animated:YES];
        [_titleLabel
setHidden:NO];
       
_titleLabel.frame=CGRectMake(0,
0, r,
r);
       
_titleLabel.text=[NSString
stringWithFormat:@"%.0f%%",percent];

        [_titleLabel
setCenter:CGPointMake(r/2+_circleChart.frame.origin.x,r+_circleChart.frame.origin.y-80)];
        [_gradeLabel
setHidden:NO];
       
_gradeLabel.frame=CGRectMake(0,
0, r,
r);
       
_gradeLabel.text=@"当前电量";

        [_gradeLabel
setCenter:CGPointMake(r/2+_circleChart.frame.origin.x,r-40+_circleChart.frame.origin.y)];

       
return percent;
    }
   
return -1.0f;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息