안드로이드 개발 정보
(글 수 45)
프로그램 개발 중 USB접속 상태를 차단하기 위하여
브로드캐스트 리시버로 ACTION_BATTERY_CHANGED 메시지를 수신한 후
int nPlug = intent.getIntExtra("plugged", 0);
에서 BATTERY_PLUGGED_USB를 확인하려고 했는데,
이것이 옵티머스 Q에서는 이것이 제대로 동작하지 않는 것 같습니다.
2가지 상황이 있을 수 있는데,
첫번째는 아예 브로드캐스트 메시지가 전달되지 않았거나,
두번째는 인텐트에 "plugged" 정보가 전달되지 않았거나...
ACTION_BATTERY_CHANGED 메시지는 sticky메시지이기 때문에,
이 메시지가 전달되지 않았을 것이라고 생각되진 않습니다.
따라서 두번째 인텐트에 정보가 제대로 실려서 오지 않을 가능성이 큰 것 같습니다.
이게 LG sync 프로그램과도 연관되어 있을 가능성이 큰데, 기기가 없어서 테스트해보지는 못했습니다.
결국 현재로선 BATTERY_STATUS_CHARGING으로 대체하였는데,
이게 제대로 동작할지는 조금더 확인해봐야할 듯 합니다.
문제는 이걸 사용하면 USB연결과 충전을 구분할 방법이 없다는 거네요...
* 참고로 안드로원(1.6)과 넥서스원(2.2)에서는 모두 BATTERY_PLUGGED_USB정보가 제대로 전달되었습니다.
안녕하세요~반갑습니다!!
이게 아니라면 한 번 intent 안에 있는 값을 다 꺼내서 확인해보세요.
마지막으로 한 말씀드리면 기기에 따라 이 방법으로는 USB가 연결되어 있는지 알아내지 못 할 수도 있습니다. 예를 들어 SKY 베가는 PC에 USB 케이블로 연결하면 충전이 안됩니다.