2012-08-04 3 views
15

와 iOS에서 실시간으로 배터리 잔량을 얻을 :나는 장치의 현재 배터리 수준 얻기 위해이 기능을 사용하고 어떻게 1 % 단위

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 
UIDevice *myDevice = [UIDevice currentDevice]; 

[myDevice setBatteryMonitoringEnabled:YES]; 
double batLeft = (float)[myDevice batteryLevel]; 
NSLog(@"%f",batLeft); 

을하지만 결과는 5 % 단위가 있습니다. 예 : 전화 배터리가 88 % 인 경우 0.85의 값만 기록합니다. batteryLevel은 0.05 단위로 값만 반환합니다. 예를 들어 0.85, 0.9, 0.95는 결코 0.82 또는 0.83과 같은 값을 반환하지 않습니다.

더 높은 정밀도로 백분율을 얻는 방법이 있습니까? 이 사이트 밖으로

+0

의 모든 세부 사항을 제공하기 위해 내 블로그에 전체 게시물이 : 난 그냥 아이폰 6 플러스와 코드를 확인하고 모든 스칼라 수준을 보여 않습니다 , 0.49 등 – brainray

답변

10

검사 : 는 Reading the battery level programmatically

하지만, 신중하게 사용합니다. 여기에 사용 된 모든 API는 iPhone에서 문서화되지 않았으므로이 응용 프로그램을 App Store에 제출하면 거부 될 수 있습니다. 배터리 충전 상태가 정확하게는 아니지만 UIDevice 배터리 모니터링 방법을 사용하는 것이 좋습니다.

+0

링크 주셔서 감사합니다. 나는 그것을 조사했다. 나는이 줄을 보았다 : "libIOKit.A.dylib를 제거한 것을 잊지 말자!", libIOKit.A.dylib를 제거하고 코드에서 헤더를 제거 할 수있다. Apple Store에 업로드 하시겠습니까? – cat

2
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 
UIDevice *myDevice = [UIDevice currentDevice]; 

[myDevice setBatteryMonitoringEnabled:YES]; 
double batLeft = (float)[myDevice batteryLevel] * 100; 
NSLog(@"%.f",batLeft); 


NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft]; 


lblLevel.text = levelLabel; 
+1

코드의 세 번째 줄에서 똑같은 일을하기 때문에 첫 번째 줄은 불필요합니다. –

32

배터리 잔량을 읽는 방법에는 4 가지가 있으며, 4 가지 방법 모두 다른 값을 반환 할 수 있습니다.

다음은 이러한 값의 시간별 차트입니다.

값이 아이폰 OS 프로젝트로 기록되었다 : https://github.com/nst/BatteryChart

는 참조 용으로 코드를 확인하시기 바랍니다.

iPhone 5 Battery

+0

이 앱을 계속 실행하고 백분율을보고합니까? 아니면 단순히 앱을 계속 실행 하시겠습니까? – simonthumper

-1

답변은 위의 아주 좋은, 그러나의 Obj-C에 모두, 나는 MonoTouch에 동일한 작업을 수행하는 다른 예와 이것들을 사용했다, 그래서 나는 경우 아무도 여기에 내 코드를 걸었습니다 그것은 필요 :

try 
{ 
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = true; 
    _Battery.Level = (int)(UIDevice.CurrentDevice.BatteryLevel * IOSBatteryLevelScalingFactor); 
    _Battery.State = UIDevice.CurrentDevice.BatteryState; 
} 
catch (Exception e) 
{ 
    ExceptionHandler.HandleException(e, "BatteryState.Update"); 
    throw new BatteryUpdateException(); 
} 
finally 
{ 
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = false; 
} 

가 나는 또한 공식적으로 here

관련 문제