기본 콘텐츠로 건너뛰기

[iOS] 배터리 상태 감시

배터리는 UIDevice의 batteryMonitoringEnabled에 YES를 설정하고, 알림 설정을 변경 사항을 받을 수 있다.

1. 배터리 모니터링 시작하기.

Source Code
    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

배터리는 상태(batteryState) 의 변경사항으로 아래 4가지 상태 값을 가진다.

typedef enum {
   UIDeviceBatteryStateUnknown,
   UIDeviceBatteryStateUnplugged,
   UIDeviceBatteryStateCharging,
   UIDeviceBatteryStateFull,
} UIDeviceBatteryState;
  • 알수 없는 상태 (Unknown) : Enabled 가 되어 있지 않는 상태
  • 전원에 연결되어 있지 않는 상태 (not plugged)
  • 충전 중인 상태 (charging)
  • 완전 충전 상태 (full)
배터리의 레벨(batteryLevel) 은 0.0~ 1.0 사이의 값을 가진다.

2. 배터리 Level과 State변경 될 때, Notification받기

알림 추가를 아래와 같이 하여서, 특정 변경이 되면 특정 블록을 실행하게 한다.

source code
        [[NSNotificationCenter defaultCenter] addObserverForName:UIDeviceBatteryStateDidChangeNotification
                                                          object:Nil
                                                           queue:[NSOperationQueue mainQueue]
                                                      usingBlock:^(NSNotification *note) {
                                                          NSLog(@"Battery State Change");
                                                          //Show Battery State
                                                      }];
        [[NSNotificationCenter defaultCenter] addObserverForName:UIDeviceBatteryLevelDidChangeNotification
                                                          object:nil
                                                           queue:[NSOperationQueue mainQueue]
                                                      usingBlock:^(NSNotification *note) {
                                                          NSLog(@"Battery Level Change");
                                                          //Show Battery Level
                                                      }];

3. 정보 읽어 오기

배터리의 state와 level은 아래와 같이 읽어 올 수 있다.

source code
    [UIDevice currentDevice].batteryState;
    [UIDevice currentDevice].batteryLevel; // 0.0f - 1.0f


4. 그럼, 이것을 어디에서 사용할 수 있는가?

특정 연산을 시작하거나, 데이터를 업로드할 때, 전원이 연결되어 있는지, level이 특정 이상인지를 체크해서 사용자에게 연결하거나, 업로드를 못하도록 할 수 있다.

사용자들이 전원이 없는 상태에서 무리하게 실행하는 것을 막을 수 있는 것이다.


댓글

이 블로그의 인기 게시물

Project Charter 샘플..

사내 프로젝트용 Charter 회사에서 Symbian에 프로젝트를 할 때, 예제 App을 만들어 보려고 시작한 사내 프로젝트의 Charter 입니다.  템플릿은 인터넷에서 구했던 것으로 생각나는데, 찾아 보시면 될 것입니다. 내용이 좋아서 약간 수정해서 만들던 것으로 기억합니다.  필요하신 분들은 아래 링크에서 받으시면 됩니다. (참고 파일은 요기에서 받으세요.  http://blog.naver.com/bjh3958/120056865800 ) OnePageReport처럼 거의 한장으로 되도록 만드는 것이 보기도 좋고, 관리도 편리합니다. 프로젝트 명:   프로젝트 이름으로 잘 만들어서 보기에 좋고, 무슨 프로젝트인지 호기심이 확~ 나도록 만드는 것이 참여하는 사람들의 기분도 좋게 만드는 것 같습니다. 작성자, 문서 버전:   보통 PM이 작성하고, 버전으로 관리를 합니다.. Revision으로 관리해도 되고.. 프로젝트 개요 및 배경:   뭘하는 것인지, 하게 된 배경이 뭔지를 간결하게 작성하는 것이 좋습니다 . 프로젝트 목표:   이 프로젝트가 결과물을 내는 과정에 뭐를 중요하게 보는지 적는다. 3가지의 목표를 가지는 것이 좋을 것 같다. 프리젠테이션에서도 3가지로 분류하듯이 이것도 3가지로 하는 것이 이해하기 편할 것으로 생각합니다. 주요 산출물:   진행되면서 어떤 결과물들이 나올지 적어야 한다. 프로젝트 관리:   뭘로 관리할 것이며, 어떤 단위로할 것인지 명시한다. 이거 명시하면 PM은 꼭 지켜야 한다. 일일업무보고는 안하는 것이 현명.. 하죠. 가설, 제약조건, 위험요소:   이 프로젝트를 진행하는데, 어떤 전제조건이 있는지, 제약 조건으로 뭘 둘지, 위험요소는 어떤 것이 있는지 여기서 명시하는 것이 좋습니다. 소요자원:   개발자 누가 필요한지, 물 구매해야 되는지 명시한다. 만일 VS2008 Team System이 ...

[QML/Qt] Windows에서 Qt Creator용 Debugging 설정하기.

먼저 Qt Creater를 설치하고 디버깅을 해보면, CDB와 GDB가 설정이 되어 있지 않는다고 한다. 이건 Visual Studio를 설치하는 것과 별개로 윈도우에 Win SDK가 있느냐 없느냐 의 차이이다. 그러므로 Visual Studio를 설치하더라도, 다시 Win SDK를 설치해야 되는 것이다. 이 설명은 Qt Creator 웹사이트에 나와 있다. 요기:  http://doc.qt.nokia.com/qtcreator-2.3/creator-debugger-engines.html#setting-the-symbol-server-in-windows 그리고 거기에 Installing Native Debuggers 부분에 보면, Debugging tools for Windows에 링크가 있다.      http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx 하지만 링크에 접속해 보면 웹사이트가 바뀌었다고 한다.     The contents of this page have been removed or relocated. You should be automatically redirected to the New Destination in 5 seconds. 새로운 위치로 가고,     http://msdn.microsoft.com/en-us/windows/hardware/gg463009 거기에서 위 항목에 들어가면 Microsoft Windows SDK for Windows 7 and .Net Frame4를 얻을 수 있다. 이것을 받아서 설치하고, Rebooting 한 후, Qt Creator에서 해당 Project를 디버깅 실행하면, 심볼위치를 설정하라고 하고, 적당한 곳을  설정하면, 디버깅이 가능하게...

iOS & Swift : Keyboard가 표시될 때, 사라질 때 이벤트와 그 키보드의 위치를 알아보자

지난 블로그에서는 Objective-C를 기준으로 정리하였는데, 이제는 Swift를 기준으로 정리한다. (링크  [iOS] Keyboard가 표시될 때, 사라질 때 이벤트와 그 키보드의 위치는? ) 일반적인 UIViewController 내에서는 표시할 위치를 이동시켜야, 키보드에 덮히지 않고, 사용자에게 표시할 수 있습니다. 1. 키보드가 화면에 나타나거나, 사라지는 Event는 무엇이고, 어떻게 알아낼까? 키보드가 표시될 때 전달되는 이벤트는... NSNotification.Name.UIKeyboard Will Show : 키보드가 표시되기 전에 호출 NSNotification.Name.UIKeyboard Did Show : 키보드가 표시되고 난 후에 호출 NSNotification.Name.UIKeyboard Will Hide : 키보드를 숨기기 전에 호출 NSNotification.Name.UIKeyboard Did Hide : 키보드를 숨기고 난 후에 호출 NSNotification.Name.UIKeyboard Will ChangeFrame : 키보드 모양이 바뀌기 전 (iOS 5 이상) NSNotification.Name.UIKeyboard Did ChangeFrame : 키보드 모양이 바뀐 후 (iOS 5 이상) 필요한 이벤트를 viewWillAppear 함수에서 NotificationCenter에 등록합니다. Source Code override func viewWillAppear(_ animated: Bool) { //화면이 표시될때, Keyboard표시에 대한 이벤트가 발생하면 호출되는 함수를 등록한다. NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: n...